我正在使用多個項目(Visual Studio 2013)的Visual Studio解決方案。一個項目用於生成.dll
文件,其他項目使用該.dll
文件並生成.exe
文件。當我導出標準類型變量時,一切正常。但如果我想使用我的自定義類型,我得到一個編譯錯誤。這是當我使用qHead
在我Exe.cpp
我得到在該行編譯錯誤爲例__declspec(dllexport)自定義類型變量
// Dll.cpp
#define DllExport __declspec (dllexport)
DllExport int maxPackSize = 20;
// my custom type
struct DllExport Header
{
int m_data; // some data
};
DllExport Header qHead = { 100 };
// Exe.cpp
#define DllImport __declspec (dllimport)
DllImport extern int packetSize; // OK
struct DllImport Header;
DllImport extern Header qHead; // leads to an error
。錯誤就像
錯誤C2027:使用未定義的類型 '標頭'
我在做什麼錯?有任何想法嗎?
爲了補充說明,Visual Studio在構建libname項目時自動添加libname_EXPORTS定義。您可以使用#ifdef爲DLL_EXPORT選擇正確的值。 – arrowd