【问题标题】:Unresolved external symbol error when creating Armadillo DLL创建犰狳 DLL 时未解决的外部符号错误
【发布时间】:2013-01-31 13:19:02
【问题描述】:

我正在尝试在 Win XP 上使用 VC++ 2010 创建 Armadillo 线性代数库的动态库,该库最初是一个仅包含标头的库。我创建了一个新项目,添加了源文件,并创建了一个 .def 文件,指定仅导出一个 Armadillo 函数(Col 类),但 Col 类出现 LNK2001 错误。我可以创建一个 main 并很好地使用 Col,所以我认为 Col 被正确包含了。

我也尝试在函数定义上使用“__declspec(dllexport)”并编译,但由于使用 dumpbin 没有显示任何内容,因此未导出函数,并且我无法成功使用 .dll。我在这里遗漏了什么吗?

【问题讨论】:

    标签: visual-c++ dll armadillo lnk2001


    【解决方案1】:

    由于Armadillo 是一个使用表达式模板的C++ 模板库,我认为不可能从中创建DLL。

    每当编译使用 Armadillo 类的代码时,C++ 编译器在编译时执行(运行)表达式模板。每当 C++ 库使用表达式模板(template metaprogramming 的一部分)时,该库都可以被视为 C++ 编译器的扩展。

    所有犰狳代码都在标题中。因此,即使您设法导出其中一个类(例如 Col 类),也不会导出任何相关的数学机制(例如,加法、乘法等),这在图书馆。

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2012-10-21
      • 2014-05-12
      • 2014-05-14
      相关资源
      最近更新 更多