[英]Error using __declspec(dllexport) : Unknown type name '__declspec'
[英]__declspec (dllexport) custom type variable
我正在研究具有多個項目的Visual Studio解決方案(Visual Studio 2013)。 一個項目用於生成.dll
文件,其他項目使用該.dll
文件並生成.exe
文件。 當我導出標准類型變量時,一切正常。 但是如果我要使用自定義類型,則會出現編譯錯誤。 這是一個例子
// 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
當我在Exe.cpp
使用qHead
,在該行上出現編譯錯誤。 錯誤就像
錯誤C2027:使用未定義類型“標頭”
我究竟做錯了什么? 有任何想法嗎?
您收到的錯誤消息是編譯器錯誤(不是鏈接器錯誤!)。 您需要先定義Header
然后再使用。
您可以移動struct DllExport Header { ... };
到單獨的頭文件(例如Dll.h
),然后在Exe.cpp
#include "Dll.h"
。
您需要在標頭中導出自定義類型,以便您的.exe可以看到該類型。 例如,
Dll.h
#ifdef EXPORT_SYMBOLS
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
struct DLL_EXPORT Header
{
int m_data;
};
執行文件
#include "Dll.h"
Header qHead;
您需要將EXPORT_SYMBOLS
添加到Dll的預處理器標志中,以便切換正確的__declspec宏。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.