【发布时间】:2015-03-23 15:44:03
【问题描述】:
Visual Studio 2013/2015:
我有一个空白的 C++ Windows 应用商店应用程序和同一解决方案中最简单的 DLL,仅导出 void foo() {}。
在例如使用这个 DLL Win32 控制台应用程序在包含 DLL 的标头并将 *.lib 文件添加到链接器依赖项的情况下按预期工作。
但是,尝试在 Windows 应用商店应用程序中使用此 DLL 在程序启动时出现异常,消息框 Unhandled exception at 0x77F0E052 (ntdll.dll) in App5.exe: 0xC0000135: Unable to Locate DLL. 和调试控制台中的以下输出:
'App5.exe' (Win32): Loaded 'C:\Users\naitsirhc\Documents\Visual Studio 2015\Projects\App5\Debug\App5\AppX\App5.exe'. Symbols loaded.
'App5.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'App5.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'App5.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
First-chance exception at 0x77F0E052 (ntdll.dll) in App5.exe: 0xC0000135: Unable to Locate DLL.
Unhandled exception at 0x77F0E052 (ntdll.dll) in App5.exe: 0xC0000135: Unable to Locate DLL.
The program '[4168] App5.exe' has exited with code 0 (0x0).
现在,如果我只是简单地将 DLL 添加为对 Windows 应用商店应用程序的引用(通过属性 -> 通用属性 -> 引用),那么它就可以工作了。
我比较了编译器和链接器的命令行,它们是相同的。
我错过了什么?网络上有许多示例,但除了一个之外,所有示例都只是将 *.lib 文件添加到链接器的依赖项中,这也是我更愿意做的。
【问题讨论】:
-
应包含本机 Dll 以存储应用程序包以在运行时可用,这是通过添加引用来完成的。
标签: c++ dll visual-studio-2013 windows-store-apps visual-studio-2015