我正在寫一個C/C++ DLL和要導出我已經使用DEF文件這樣重載函數的C++ DLL文件高清
LIBRARY "MyLib"
EXPORTS
Foo
Bar
的代碼定義爲之前完成某些功能此,例如:
int Foo(int a);
void Bar(int foo);
但是,如果我想聲明的Foo)等的重載的方法(:
int Foo(int a, int b);
作爲d ef文件只有函數名,而不是完整的原型,我看不出它將如何處理重載函數。你是否只使用了一個入口,然後指定在將正確的原型函數指針傳遞給LoadLibrary()時需要哪個重載版本?
編輯:要清楚,這是在使用Windows的Visual Studio 2005
編輯:標記非高清(__declspec)方法,作爲答案......我知道這並不實際使用解決問題def文件,但似乎沒有使用def文件的(官方)解決方案。但是,如果有人知道我們沒有重載的函數和def文件,將會留下問題。
如果我們在動態DLL中使用GetProcAddress()會怎麼樣? – null 2013-03-21 06:07:13
然後,您需要使用mangled名稱,或者重命名其中一個函數,並使它們都是`extern「C」`,假定它們都不接受或返回C++對象。 – 2013-03-21 19:17:39