我這是寫在2003 VS庫代碼,C++ 7.1如何禁用C++ 7.1名稱修改? :(
我設法編譯在VS 2010現在我需要編譯它在VS2003爲好。
問題是我不能阻止VS2003名字改編!
我用__declspec(dllexport)的__stdcall之前函數的名字,我也把外部的「C」塊碼。
我仍然得到錯位的函數名,當我在編譯VS 20003.我不需要一個.def文件使用__declspec(dllexport)對不對?
熙是代碼:
extern "C"
{
void __declspec(dllexport) __stdcall FreeMyObject(MyObjectHandle pObj)
{
delete pObj;
}
}
而且 「呼喚公約」 是__cdecl(/ Gd)的
爲什麼我得到錯位的函數名?有沒有我需要在編譯器選項中設置的選項?
它將被裝飾爲_FreeMyObject @ 4,stdcall裝飾。與C++的名字不一樣。它與C不兼容。如果你想重命名它,那麼你必須使用一個.def文件。 –
謝謝你,yest似乎是因爲stdcall。所以編譯器在VS2010中表現不同?因爲它的工作正常,沒有def文件。謝謝你的回答:) – QProgrammer
很長很長時間以來一直這樣。 VS2010沒什麼不同。唯一合理的猜測是,您正在VS2010項目中構建64位代碼。這不需要名稱裝飾,只有一個調用約定。你不會留下任何其他的東西來猜測。 –