0
我想從可執行文件導出符號 - exe的主要是一個交互式shell,而導出的符號提供外部程序的功能。從埃克塞特Visual Studio導出符號
這是我目前出口的宏:
#define LIB_EXP extern "C" __declspec(dllexport) void __cdecl
導出功能:
LIB_EXP Register() { /**/ }
如果我使用cl.exe時直接 - 不帶任何開關 - 我得到以下符號表,看來這好的:
00000000 characteristics
4E00E611 time date stamp Tue Jun 21 20:42:25 2011
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00001000 Register
Summary
4000 .data
5000 .rdata
2000 .reloc
11000 .text
用VS 2010編譯得到以下符號表:
00000000 characteristics
4E00E369 time date stamp Tue Jun 21 20:31:05 2011
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00011005 Register = @ILT+0(_Register)
Summary
1000 .data
1000 .idata
3000 .rdata
1000 .reloc
1000 .rsrc
6000 .text
10000 .textbss
作爲該導入此exe程序被使用後期綁定,並查找通過導出的函數「GetProcAddress的」我依賴於功能是完全相同作爲指定的名稱。 有沒有人知道這個混亂「= @ ILT + 0(_Register)」有點看起來像名稱mangling從哪裏來,以及如何我可以擺脫它? VS-C++ - 項目使用「空項目」模板,且未修改...
謝謝,那就是訣竅 - 如果我動態加載EXE並使用GetProcAddress(與DLL不同),有什麼需要考慮的嗎? – MFH
是的,它不起作用。也許你可以創建一個可重定位的EXE,我不知道。這是一個不同的問題,開始另一個問題。 –