2011-09-23 49 views
1

當涉及到編寫一個DLL在MSVC(特別是2010版本)時,我有一個小問題。 我的程序由主要部分和一個DLL組成。該DLL包含的功能是:MSVC:__declspec(dllexport)不符號

__declspec(dllexport) int test_function(void) { 
    return 42; 
} 

使用DLL項目(不使用預編譯頭文件,我選擇了一個空的DLL項目)編譯該文件。現在,當我想使用dumpbin工具列出導出的符號時,test_function未在出口下列出。是否有一個特定的設置強制__declspec(dllexport)實際輸出符號?

任何幫助,歡迎。謝謝!

+1

你確實沒有出口嗎? dumpbin的輸出是什麼? – Bahbar

+1

我會投入「忘記使用/ exports」選項。鎳上「不承認損壞的名字」。 –

回答

1

這應該做到這一點。如果這是整個代碼,請檢查以下內容:

1)您實際上正在檢查正確的dll。看看時間戳。仔細檢查位置和名稱。

2)你正在編譯指定的cpp(我把它定義在cpp文件中)。僅僅因爲文件在目錄中並不意味着它被編譯,請確保它被添加到項目中。

3)確保您的函數不會被預處理器指令從編譯單元中排除。

也查找其他符號,並嘗試查看導出的符號和您的函數之間有什麼區別。

如果失敗,你應該將__declspec(dllexport).h文件和定義(不__declspec(dllexport))到您的.cpp。它可能不會被導出,因爲編譯器可能會嘗試通過內聯它來優化它。

相關問題