我正在尝试使用Win ++上的VC ++ 2010创建Armadillo线性代数库的动态库,该库最初是一个仅限标头的库。我创建了一个新项目,添加了源文件,并创建了一个.def文件,指定只导出一个Armadillo函数(Col类),我得到了Col类的LNK2001错误。我可以创建一个main并使用Col就好了,所以我认为Col正确包含在内。
我也尝试在函数定义中使用“__declspec(dllexport)”并进行编译,但由于使用dumpbin没有显示任何内容,因此不会导出该函数,并且我无法成功使用.dll。我在这里错过了什么吗?
答案 0 :(得分:0)
由于Armadillo是使用表达式模板的C ++模板库,我认为不可能从中创建DLL。
只要编译使用Armadillo类的代码,C ++编译器就会在编译时执行(运行)表达式模板。每当C ++库使用表达式模板(template metaprogramming的一部分)时,该库可以被认为是C ++编译器的扩展。
所有Armadillo代码都在标题中。因此,即使您设法导出其中一个类(例如Col类),也不会导出任何相关的数学机制(例如,加法,乘法等),这些机制在整个其他部分中都被定义。库。