2013-01-31 63 views
1

我想在Win XP上使用VC++ 2010創建一個線性代數庫的動態庫,該代碼庫最初是僅包含頭文件的庫。我創建了一個新項目,添加了源文件,並創建了一個指定只導出一個Armadillo函數(Col類)的.def文件,並且我得到了Col類的LNK2001錯誤。我可以創建一個main並使用Col很好,所以我認爲Col正被正確包含。創建Armadillo DLL時無法解析的外部符號錯誤

我也試過在函數定義上使用「__declspec(dllexport)」並編譯它,但函數不能導出,因爲使用dumpbin什麼都不顯示,我不能使用.dll。我在這裏錯過了什麼嗎?

回答

0

由於Armadillo是一個使用表達式模板的C++模板庫,我不認爲有可能從它創建一個DLL。

無論何時編譯使用Armadillo類的代碼,C++編譯器都會在編譯時處執行(運行)表達式模板。只要C++庫使用表達式模板(template metaprogramming的一部分),該庫就可以被認爲是C++編譯器的擴展。

所有的犰狳代碼都在標題中。因此,即使您設法導出其中一個類(例如Col類),也不會導出任何相關的數學機器(例如添加,乘法等),該數學機器在整個其他部分圖書館。

相關問題