2012-09-17 75 views
-2

好的,我會重寫這個問題。 1.是否有足夠的做通過C++接口導出整個類

class __declspec(dllexport) CXyz { 
public: 
int Food() {printf("Food\n");} 
}; 

,使類可以在exe文件中使用這樣的:當我做CXyz X(成員&方法的代碼分配

#include "CXyz.h" 
CXyz obj; 
obj.Food(); 

2.會發生什麼),我的意思是它分配了一個線性結構,其大小爲(aprox。members size +方法的函數指針),方法代碼位於程序的.code節中。當我做CXyz * pX時會發生什麼?

+0

你有.exe的源代碼嗎? –

+2

我不明白這個問題。你說的一半話不代表什麼:你不能「導出課程」。代碼不是「分配」的。沒有像「班級指針」那樣的東西。使用頭文件有什麼問題? –

+0

這顯然是RTFM問題之一;多次討論了從DLL中導出類的方法。我只希望插件建議將被修改和接受爲C++ 1x ... – Griwes

回答

2
  1. 還不夠。在客戶端,CXyz必須聲明爲__declspec(dllimport)。這通常是通過條件編譯完成的,當某個宏擴展爲Dll中的__declspec(dllexport)時,並且在客戶端項目中擴展爲__declspec(dllimport)。使用VS應用程序嚮導創建示例Dll,在其中一個嚮導步驟中選中「導出符號」,並查看它是如何完成的。當然,客戶端項目應該與服務器.lib文件相關聯,並且服務器Dll應該在運行時可用。

  2. 只分配類成員(也可能是vtable)。裝配層次上的類方法是具有隱藏「this」參數的全局函數。

+0

非常感謝,你的回答非常幫助我。 – AlexandruC