创建Armadillo DLL时未解决的外部符号错误

时间:2013-01-31 13:19:03

标签: visual-c++ dll armadillo lnk2001

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

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

1 个答案:

答案 0 :(得分:0)

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

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

所有Armadillo代码都在标题中。因此,即使您设法导出其中一个类(例如Col类),也不会导出任何相关的数学机制(例如,加法,乘法等),这些机制在整个其他部分中都被定义。库。