1

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

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

4

1 回答 1

0

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

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

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

于 2013-01-31T23:57:52.943 回答