Ich habe versucht, eine Desktop-Anwendung mit WinRT-Bibliotheken in Visual Studio 2012 zu erstellen. Das Code-Snippet geht wie folgt.WinRT-Bibliothek funktioniert nicht im Freigabemodus
[STAThread]
int wmain (Platform :: Array <String ^>^args)
{
wcout << L"Copyright (c) Microsoft Corporation. All rights reserved." << endl;
wcout << L"FindPackages sample" << endl << endl;
try
{
auto packageManager = ref new Windows::Management::Deployment::PackageManager();
auto packages = packageManager->FindPackages();
int packageCount = 0;
std::for_each(Windows::Foundation::Collections::begin(packages), Windows::Foundation::Collections::end(packages),
[&packageManager, &packageCount](Windows::ApplicationModel::Package^ package)
{
DisplayPackageInfo(package);
DisplayPackageUsers(packageManager, package);
wcout << endl;
packageCount += 1;
});
}
catch (AccessDeniedException^)
{
wcout << L"FindPackagesSample failed because access was denied. This program must be run from an elevated command prompt." << endl;
return 1;
}
catch (Exception^ ex)
{
wcout << L"FindPackagesSample failed, error message: " << ex->ToString()->Data() << endl;
return 1;
}
getchar();
return 0;
}
Dies die U-Bahn zur Liste verwendet wird apps Details. Und dieser Code funktioniert gut im DEBUG-Modus. Aber wenn ich es Modus freizugeben ändern, erhalte ich eine Fehlermeldung:
error LNK2001: unresolved external symbol _NtProcessStartup
HINWEIS: Ich habe geändert bestimmte Einstellungen wie
Konfigurationseigenschaften -> C/C++ -> Verbrauchen Windows-Runtime-Ausnahme auf Ja (/ ZW)
Konfigurationseigenschaften -> C/C++ -> Codegenerierung -> Minimal Rebuild auf NO (/ gm-) aktivieren
Konfigurationseigenschaften -> C/C++ -> Codegenerierung -> Laufzeitbibliothek zu Multithread-DLL (/ MD)
Es wurde gesagt, dass diese Einstellungen für den WinRT-Bibliothek-Einschluss obligatorisch sind. Also im Grunde muss ich meinen Code im Multi_Threaded (/ MT) -Format für den Release-Modus ausführen. Aber/MT oder/Mtd ist nicht kompatibel mit (/ ZW) -Methode, die für WinRT-Bibliotheken erforderlich ist. Bitte führen Sie mich auf meine Fehler.