大家好,我在匯出DLL遇到了一個比較尷尬的問題,就是我定義了一個匯出類,但是這個類又使用CList定義了一個變數,但是CList是MFC的模板類,沒有匯出。編譯時出現 warning C4251,這個該怎么解決。
偽代碼:
class _declspec(dllimport) Ctemp
{
.
.
Public:
CList<int,const int &> m_Qeque;
.
.
}
CList在afxtempl.h定義:
template<class TYPE, class ARG_TYPE = const TYPE&>
class CList : public CObject
{
.
.
.
}
uj5u.com熱心網友回復:
那就不用CList,或者用MFC匯出類uj5u.com熱心網友回復:
這是別人之前的代碼,已經在其他地方用過了,現在是要求做成dll。改動量太大了uj5u.com熱心網友回復:
這樣定義是錯誤的。假定 CList 在你的編譯版本和 用戶的編譯版本不一致,那么會導致錯誤。
如果你的資料不是 public,而是 private 那么可以使用一個相同的記憶體布局來代替。
uj5u.com熱心網友回復:
是的,多謝指正,雖然我在程式寫的是private,但是我不知道public會產生什么后果,所以才這么寫的。還是你比較細心。
uj5u.com熱心網友回復:
DLL匯出建議盡量用C或者COM做介面不然會有版本問題。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/147864.html
標籤:進程/線程/DLL
上一篇:vc2010 基于用戶串列無顯示,不知道可以可以這樣登錄!
下一篇:WARNING:WaitCommEvent()Failed with the following error:句柄無效
