Windows 中的 QtCreator 和 Matlab 库

Posted

技术标签:

【中文标题】Windows 中的 QtCreator 和 Matlab 库【英文标题】:QtCreator and Matlab libraries in Windows 【发布时间】:2015-04-16 16:16:10 【问题描述】:

我正在尝试使用 QtCreator 和外部 Matlab 库在 Windows 中构建应用程序。我可以添加库并包含目录,但是当它尝试链接时,我得到所有 Matlab 函数的“未解析的外部符号”。 QtCreator 正在寻找 _matOpen,但函数是 matOpen。我用“dumpbin”看符号,果然qt obj文件中的符号是

...
00000294  REL32                      00000000       149  _matOpen
...
149 00000000 UNDEF  notype ()    External     | _matOpen
...

在matlab库中:

...
77B8 __imp_matOpen
77B8 matOpen
...
4B matOpen
...
  Version      : 0
  Machine      : 8664 (x64)
  TimeDateStamp: 5009E1D3 Fri Jul 20 15:55:15 2012
  SizeOfData   : 00000013
  DLL name     : libmat.dll
  Symbol name  : matOpen
  Type         : code
  Name type    : name
  Hint         : 97
  Name         : matOpen

为什么 QtCreator 会添加下划线,如何让它停止?

我正在使用 Matlab 2012b、Qt 5.4 和 QtCreator 3.3.2。

【问题讨论】:

相关:Why do C compilers prepend underscores to external names? 【参考方案1】:

确保链接到正确的架构。 64位版本没有前导下划线,32位版本有IS。

【讨论】:

以上是关于Windows 中的 QtCreator 和 Matlab 库的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上制作期间未定义 Qt vulkan 类

Windows 上的 QtCreator/QMake 完全禁用调试构建

windows QTCreator的创建、处理和切换

QtCreator 1.3、Qt 4.6.2 和 cmake 在 windows 上的构建问题

如何在 Windows 上使用 QtCreator 为 Linux 构建和调试应用程序?

windows下VisualStudio和QtCreator搭建Qt开发环境