可能是一個簡單的問題,但我只有Linux的測試上在不需要__declspec(dllexport)的驗證碼。在當前代碼中,__declspec(dllexport)位於.h文件中的所有文件的前面,但在cpp文件中的50%功能之前,所以我想知道它們是否真的需要在cpp文件中?是__declspec(dllexport)的需要cpp文件
7
A
回答
11
不,它只在標題中需要。
這是link以及更多信息。
擴大對什麼是維奈說,我經常看到的一個宏在你的頭文件中定義
#if defined(MODULENAME_IMPORT)
#define EXPORTED __declspec(dllimport)
#elif defined(MODULENAME_EXPORT)
#define EXPORTED __declspec(dllexport)
#endif
然後你做
設置相應的定義項目的項目設置做導入/導出。
5
不,它在cpp文件中不是必需的。只有在聲明中它是必需的。
例如,如果我有一個類CMyClass。如果我想導出此則.H將有
.H Server代碼
__declspec(dllexport)的CMyClass { };
在客戶端的代碼,即,它使用這個類,你必須轉發聲明類如
客戶機代碼
__declspec(dllimport的)CMyClass;
//代碼使用類
2
您可以在.cpp文件中使用也當你有模板代碼和您在.cpp文件實例,那麼你需要導出的定義,當它被實例化。但即使在這種情況下,我也已經看到,在.h中的做法也是有效的。在Windows上,您可以使用dumpbin.exe/exports * .dll來查看導出的簽名,Linux中也有類似的實用程序。這會給你一個想法如何導出簽名。
相關問題
- 1. .def文件與__declspec(dllexport)宏
- 2. 警告C4091:'__declspec(dllexport)'
- 3. __declspec(dllimport的/ DLLEXPORT)和繼承
- 4. 「__declspec(dllexport)」是做什麼用的?
- 5. MSVC:__declspec(dllexport)不符號
- 6. 使用__declspec(dllexport)而不是-EXPORT:
- 7. 爲什麼要使用__declspec(dllexport)?似乎沒有它的工作
- 8. 創建DLL,與__declspec混淆(dllexport)
- 9. DLL導出__declspec(dllexport)不起作用
- 10. __declspec(dllexport)自定義類型變量
- 11. 使用__declspec從DLL導出函數(dllexport)
- 12. 在類中重載運算符是否需要使用__declspec(dllexport)(如果它們用於DLL項目中)?
- 13. `__declspec(dllexport)的EXTERN的std :: string foo的;`不連接
- 14. Windows和Linux上的C++ [[gnu :: visibility(「default」)]]和__declspec(dllexport)
- 15. 什麼呢__declspec(dllexport)的事,當導入功能前加入
- 16. 如何在stl模板中使用導出的類(__declspec(dllexport))?
- 17. 如何使用parallel_for_each功能和__declspec(dllexport)的屬性,同時
- 18. 導出C#dll的入口點 - 是否有類似__declspec(dllexport)的東西?
- 19. C++ __declspec(dllexport)函數無法訪問實例變量
- 20. 哪個gcc發行版支持__declspec(dllexport)_cdecl和_stdcall
- 21. 什麼時候在C++中使用__declspec(dllexport)
- 22. 代碼「DECLDIR __declspec(dllexport)」究竟做了什麼?
- 23. 結構不能採取構造函數與__declspec(dllexport)
- 24. Pygmalion轉換:使用「#define DLL」代替「extern」C「__declspec(dllexport)」
- 25. __declspec(dllimport)的必要性
- 26. 我什麼時候需要#include .cpp文件?
- 27. 是否需要頭文件?
- 28. 是否需要resx文件?
- 29. 僅包含一個#include的.cpp文件的要點是什麼?
- 30. 使用.def或__declspec(dllexport)爲跨平臺代碼導出共享庫符號?