是否可以使用特定錯位名稱從C++ Builder DLL中導出函數?
我正在嘗試構建一個C++ Builder DLL來替換現有的VC++
DLL。問題是使用該DLL的應用程序期望其中一個函數具有特定的錯位名稱。如何強制使用VC++名稱修改C++ Builder?
也就是說,它預計要調用的函數:
"[email protected]@[email protected]@[email protected]@@Z"
當然,我可以從我的DLL導出函數有錯位的名字,但CodeGear公司堅持使用自己的名稱重整方案。
是否有可能迫使C++ Builder來:
的功能使用特定的重整名稱?
或
- 使用VC++名稱mangling來實現特定功能嗎?
請注意,我只想更改特定函數的mangling,而不是DLL中的所有函數。
我的理解是,使用'extern「C」'將停止被破壞的函數名稱,我真的希望它以某種方式被破壞。
我CodeGear允許開發人員導出具有特定名稱的函數,但我只有這樣才能使用簡單的導出名稱,而不是複雜的字符。我想知道是否有其他人能夠得到這個工作。 – Hoppy 2011-04-18 06:51:37
+1,這裏的損壞是爲了保護你免受不兼容的ABI的傷害。你應該首先找出哪個VC++ ABI是你的目標,IIRC VC-2005之前的ABI與VC2005及之後的ABI不兼容。 – MSalters 2011-04-18 07:54:55