所以我正在使用Qt Creator制作Windows Qt应用程序。这个应用程序使用一些自制的启动时动态加载的插件。
其中一个插件使用GNU Scientific Library。当我在该插件中调用来自GSL的东西的代码时,加载失败,我在我的应用程序中收到日志警告(并且与插件相关的任何内容都不存在/不起作用)。当我注释掉GSL代码时,加载成功。
由于我必须将此项目传递给其他人或在某些服务器上提交它,因此我使用预编译的DLL和标头(我放在我自己的源文件夹中)而不是整个未编译的源。 DLL找到here。
我猜不知道GSL错过了一些依赖关系或者没有正确加载。有没有人有经验或想法与之分享?
我也在尝试构建一个虚拟C ++项目,以查看哪些内容无法正常工作。这个假人甚至不是Qt应用程序,它只是一个沉闷的C ++控制台项目,只有一个主要调用一些gsl函数。现在这里Qt Creator无法编译,因为当它包含来自gsl的头文件并解析它们时,它会在其中的所有内部包含失败(没有这样的文件或目录)。他们看起来像
#include <gsl/gsl_some_content.h>
为什么它在那里失败而不在我的Qt App项目中?如果我硬核 - 用
替换那些包含#include "gsl_some_content.h"
然后它编译但在运行时退出代码-1073741515,没有显示任何printfs(即使我在主要的开头有它们)。同样,如果我注释掉main的gsl部分,一切正常并且printfs显示。
编辑:还有一条信息:dumpbin / dependents给我一个错误:
Dump of file libgsl-19.dll
File Type: DLL
LINK : fatal error LNK1000: Internal error during DumpSections
Version 9.00.30729.01
ExceptionCode = C0000005
ExceptionFlags = 00000000
ExceptionAddress = 009671A0 (00940000) "C:\Program Files (x86)\Common
Files\Microsoft\Visual C++ for Python\9.0\VC\Bin\link.exe"
NumberParameters = 00000002
ExceptionInformation[ 0] = 00000000
ExceptionInformation[ 1] = 00000004
CONTEXT:
Eax = 40000040 Esp = 001CDDB0
Ebx = 02943A08 Ebp = 001CDDD8
Ecx = 00000004 Esi = 00000004
Edx = 0094405C Edi = 0000014C
Eip = 009671A0 EFlags = 00010246
SegCs = 00000023 SegDs = 0000002B
SegSs = 0000002B SegEs = 0000002B
SegFs = 00000053 SegGs = 0000002B
Dr0 = 00000000 Dr3 = 00000000
Dr1 = 00000000 Dr6 = 00000000
Dr2 = 00000000 Dr7 = 00000000
提前致谢,
查尔斯