当我在我的 C++ 静态库项目 A 中包含 atlbase.h header 时,我的应用程序崩溃,该项目通过引用 C++ dll 项目 B 添加,然后通过引用 C++ 运行时组件项目 C 添加。项目 C 通过引用添加C# 通用应用程序 D。设 K 是类形式的 C 项目,它在其构造函数中间接引用项目 A 的功能。当创建类 K 的实例时,D 应用程序抛出异常并显示该消息:
“System.IO.FileNotFoundException:找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)\r\n 在 System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)\r\n 在 WindowsRuntimeComponent2 .Class1..ctor()\r\n 在 App5.MainPage..ctor()\r\n 在 App5.App5_XamlTypeInfo.XamlTypeInfoProvider.Activate_0_MainPage()\r\n 在 App5.App5_XamlTypeInfo.XamlUserType.ActivateInstance()\r\n 在 Windows.UI.Xaml.Controls.Frame.Navigate(类型 sourcePageType,对象参数)\r\n 在 App5.App.OnLaunched(La"
消息是可以理解的,但我不明白为什么找不到它,因为当项目 B 是静态库而不是 dll 或不包含 atlbase.h 时它可以正常工作。有人知道我做错了什么吗?
所有项目都是 windows 10 的通用窗口,我在 windows phone 上测试我的应用程序。
使用工具版本:
- Microsoft Visual Studio Professional 2015 版本 14.0.247200.00 更新 1
- Microsoft .NET Fremework 版本 4.6.01055
最佳答案
我也遇到了同样的问题。 您可以将 _ATL_NO_DEFAULT_LIBS 添加到项目的预处理器中,其中包括 atlbase.h
关于c# - 包含 atlbase.h header 时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34442777/