试图运行Windows 7,Qt 5.2.0程序,它立即崩溃.我有mingw48_32版本和Qt 5.2.0的32位版本.我没有Visual Studio,虽然我确实下载并安装了一些2010 VS SDK和.Net框架的东西,但仍然没有运气.我试过搜索这些东西无济于事.如果它在我的机器上的某个地方,我还没有找到它们.
运行依赖walker后,它显示以下缺少的DLL:
GPSVC.DLL
IESHIM.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL
API-MS-WIN-EVENTING-PROVIDER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-THREADPOOL-L1-2-0.DLL
API-MS-WIN-CORE-SYSINFO-L1-2-0.DLL
API-MS-WIN-CORE-SYNCH-L1-2-0.DLL
API-MS-WIN-CORE-RTLSUPPORT-L1-2-0.DLL
API-MS-WIN-CORE-REGISTRY-L1-1-0.DLL
API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL
API-MS-WIN-CORE-MEMORY-L1-1-1.DLL
API-MS-WIN-CORE-LIBRARYLOADER-L1-1-1.DLL
API-MS-WIN-CORE-INTERLOCKED-L1-2-0.DLL
API-MS-WIN-CORE-HEAP-L1-2-0.DLL
API-MS-WIN-CORE-ERRORHANDLING-L1-1-1.DLL
API-MS-WIN-CORE-DELAYLOAD-L1-1-1.DLL
API-MS-WIN-CORE-DEBUG-L1-1-1.DLL
API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL
Run Code Online (Sandbox Code Playgroud)
我真的很感激有任何帮助来解决这个问题!已经花了几天时间试图解决这个问题.谢谢!
我试图通过将每种语言插入到我的qt应用程序中来显示不同的语言字符串,QMap<QString, QString>以便可以在几个地方重复使用并在整个应用程序中放入不同的组合框.我这样做是通过QMap在CTOR中创建类似的:
m_langMap.insert(QString::fromWCharArray(L"English"), "english");
m_langMap.insert(QString::fromWCharArray(L"Dansk"), "dansk");
m_langMap.insert(QString::fromWCharArray(L"Nederlands"), "dutch");
m_langMap.insert(QString::fromWCharArray(L"?eština"), "czeck");
m_langMap.insert(QString::fromWCharArray(L"Slovenský"), "slovak");
m_langMap.insert(QString::fromWCharArray(L"Magyar"), "hungarian");
m_langMap.insert(QString::fromWCharArray(L"Român"), "romanian");
m_langMap.insert(QString::fromWCharArray(L"Latviešu"), "latvian");
m_langMap.insert(QString::fromWCharArray(L"Lietuvi?"), "lithuanian");
m_langMap.insert(QString::fromWCharArray(L"Polski"), "polish");
m_langMap.insert(QString::fromWCharArray(L"Português"), "portuguese");
m_langMap.insert(QString::fromWCharArray(L"Español"), "spanish");
m_langMap.insert(QString::fromWCharArray(L"Français"), "french");
m_langMap.insert(QString::fromWCharArray(L"Italiano"), "italian");
m_langMap.insert(QString::fromWCharArray(L"Svenska"), "swedish");
m_langMap.insert(QString::fromWCharArray(L"???????"), "russian");
m_langMap.insert(QString::fromWCharArray(L"??????????"), "ukranian");
m_langMap.insert(QString::fromWCharArray(L"???????"), "russian");
m_langMap.insert(QString::fromWCharArray(L"??"), "chinese");
m_langMap.insert(QString::fromWCharArray(L"???"), "japanese");
Run Code Online (Sandbox Code Playgroud)
然后我将它们插入到组合框中:
QMap<QString, QString>::const_iterator it = m_langMap.begin();
while (it != m_langMap.end())
{
ui->comboBox->addItem(it.key());
++it;
}
Run Code Online (Sandbox Code Playgroud)
当应用程序运行时,我看到以下内容:

但是,如果我创建一个单独的.ui文件并以相同的方式插入地图,我会看到以下内容(即使我将这个单独的Dialog类包含在同一个应用程序中),所以很明显,就App而言没有字体问题知道如何渲染不同的字符集....但我无法弄清楚为什么第一个不会渲染字符集?
有人可以告诉我为什么第一个不起作用但第二个不起作用?我检查了Designer,它的Locale在我下面显示的两个ui文件中设置为'C,Default'.我似乎无法弄清楚是什么导致第一个不起作用的差异,第二个在同一个应用程序中工作.
谢谢你的帮助!
另一个测试对话框:

我刚刚注意到,我的一个键**NSUserDefaults**
经常会返回nil.似乎大约一半的时间是正确的,另一半则不是.我说有一半的时间,但我不是说它的翻转,只有40-50%,我觉得它不起作用.当我写初始值时,我立即调用同步.我使用此密钥作为新用户注册时设置的应用程序修订版.
以下代码返回nil:
#define kDBrevision @"revision"
NSString *rev = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
Run Code Online (Sandbox Code Playgroud)
当我启动应用程序并只监视值(不写任何NSUserDefaults)时,该值有时是有效的,根本不会修改NSUserDefaults.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSString *r = [[NSUserDefaults standardUserDefaults] objectForKey:kDBrevision];
NSLog(@"revision %@", r);
_exit(1);
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会这样.我在连接到Xcode 8.2.1的设备上运行iOS 10.有人有主意吗?谢谢
编辑:我开始与苹果谈论修复这个问题,并发现如果你已经完成了文件保护,那可能是这个问题不时出现的原因,不过苹果告诉我我的具体情况(这是我此时只能确定一个)是一个错误.这种情况是当你使用Xcode在设备上启动应用程序时,它应该不会像这样失败,偶尔也会失败.不知道何时或是否将被修复.相反,我将我的关键字符串从默认值转移到了钥匙串.
我遇到了一个问题,即NSLocalizedString总是返回大写的字符串,而不管其输入如何。本地化正在正常进行,我以为我做了引起这种情况的事情,但我似乎无法弄清楚到底发生了什么。
这是我的代码:
func localize(_ str: String) -> String {
print("str in: \(str)")
return NSLocalizedString(str, comment: "")
}
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
let txt = self.localize("Question")
print("txt = \(txt)")
Run Code Online (Sandbox Code Playgroud)
输出:
str in: Question
txt = QUESTION
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
我已经grep了我所有的.strings文件,并确认其中没有
“ QUESTION”。
从模拟器中删除了应用,然后重新运行
将传入字符串更改为任何文件中都不存在的字符串,例如“ randomxxyxxy”
我尝试在这个问题上搜索了很长时间,但找不到类似该问题的任何东西。
任何帮助表示赞赏,谢谢