2015-08-25 47 views
1

導出的數據是否存在GetProcAddress版本?動態加載DLL導出的數據

我想這樣做:

Mydll.cpp:

MyDataType::MyDataType(long, wchar_t*) 
{ 
    //Dummy code 
    this->temp = 3; 
} 
__declspec(dllexport) MyDataType Here(50, L"random text"); 

MyClient.cpp:

int main(void) 
{ 
    HINSTANCE hData = LoadLibrary("MyDll.dll"); 
    reinterpret_cast<MyDataType*>(GetDataAddress(hData, "Here"))->DoSomething(); 
} 

也就是說,定義導出的數據( 「在這裏」)的UDT(「MyDataType」),並且它們在動態加載DLL時獲取它的地址。這可能嗎?

+1

msdn頁面顯示「從指定的動態鏈接庫(DLL)中檢索導出的函數或變量的地址。」 - 即它應該只是工作(TM) – pm100

+0

我要同意pm100。 當您在運行時加載DLL時,您描述的過程的哪些部分不做? – Phixle

+0

檢查mydll.cpp的輸出。我不知道'__declspec(dllexport)'放在一個名稱上是什麼類型的,但可能是某種東西,所以GetProcAddress調用將無法使用「Here」找到該符號,並且您需要使用完整的名稱。 – 1201ProgramAlarm

回答

0

msdn頁面顯示「從指定的動態鏈接庫(DLL)中檢索導出的函數的地址或變量」。 - 即它應該正常工作(tm)