我已经在我的系统上安装了这些软件包:
我想在我的Qt应用程序中使用包含后台逻辑的Win32 DLL。我所做的是包含在C ++中的标题 - >一般 - >其他包含目录并引用公共属性中的DLL文件 - >引用。这个方法适用于在同一解决方案下创建Qt项目之前用于测试的Win32控制台应用程序。 我还尝试了“复制本地”选项(VS将其恢复为" False"每次都出于某种原因)并将包含.lib文件的目录的路径放在链接器中 - >一般 - >其他图书馆目录,该文件随后包含在Linker->中。输入 - >额外的依赖关系。似乎没什么用。 应该认为代码符合ABI,因为所有内容都是使用MSVC编译的。我也读过question - 也许它与此有关?
DLL项目中的所有公共方法都使用__declspec(dllexport)前缀公开。 我没有使用过extern" C"部分或BOOL APIENTRY DllMain就像在这个question中一样。
我尝试运行项目时弹出的错误:
编辑:我现在尝试将Qt应用程序的构建输出文件夹更改为DLL项目的文件夹。它现在运行(仅通过VS),但在退出时抛出有关Qt5Widgetsd.dll库的访问冲突异常:
Problem signature:
Problem Event Name: BEX
Application Name: RagingSeasGUI.exe
Application Version: 0.0.0.0
Application Timestamp: 53fccbaa
Fault Module Name: Qt5Widgetsd.dll
Fault Module Version: 5.3.1.0
Fault Module Timestamp: 53a2bfdb
Exception Offset: 0052f2b4
Exception Code: c0000005
Exception Data: 00000008
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1050
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
答案 0 :(得分:0)
通过将Qt项目的构建输出文件夹更改为与DLL项目相同的文件来解决:配置属性 - >一般 - >输出目录。仍然不明白为什么Visual Studio不允许我使用“复制本地”选项。