我在用XE3中開發使用上期技術CTP綜合交易平臺API介面時,呼叫DLL匯出類創建物件時報了一個[ilink32 Error] Error: Unresolved external 'CThostFtdcTraderApi::CreateFtdcTraderApi(const char *, const const bool)' referenced from E:\AUTOTRADETEST\WIN32\DEBUG\UNIT1.OBJ錯誤,我在使用此DLL前已經用implib將LIB庫檔案重新生成也不行,懇請高手指點一下,應該如何解決些問題。
uj5u.com熱心網友回復:
你把VC部分的源代碼貼出來啊uj5u.com熱心網友回復:
關鍵是生成的lib檔案是否添加到工程中了?uj5u.com熱心網友回復:
用bcb使用vc dll的匯出類,根本是不可行的方法,因為 兩種編譯器對類的記憶體分布處理是不一樣的,除非dll可以輸出二進制兼容(編譯器無關)的介面。
uj5u.com熱心網友回復:
我現在的應用就是用VC寫DLL匯出類,用C++Builder做UI,呼叫DLL中的類。
DLL中匯出類的設計模式很重要。
uj5u.com熱心網友回復:
那應該就是二進制兼容吧,比如輸出類作為基類不含類變數,解構式不要 virtual ,加一個deleteself 成員函式, 最好匯出類是純抽象類。基本上就是c++用的介面類,和COM 介面要求基本相同。
還是說限制沒有這么多呢?
uj5u.com熱心網友回復:
是的,純虛類。類似介面模式。這樣做的好處是兼容性高,生成的DLL匯出類可以直接在C++/Delphi中使用。uj5u.com熱心網友回復:
thank you very muchuj5u.com熱心網友回復:
lz最后是怎么解決的?我lib生成了,也加到工程里面去了。還是報linker error。pUserApi = CThostFtdcTraderApi::CreateFtdcTraderApi();
相關頭檔案
class TRADER_API_EXPORT CThostFtdcTraderApi
{
public:
///創建TraderApi
///@param pszFlowPath 存貯訂閱資訊檔案的目錄,默認為當前目錄
///@return 創建出的UserApi
static CThostFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = "");
....
};
uj5u.com熱心網友回復:
VC直接匯出CLASS說明對方程式員根本沒有考慮給非VC程式員使用,碰到這種情況俺一般的處理方法是用VC再包裝一下,匯出標準的C函式給C++BUILDER或其它語言呼叫,包括給C#使用。uj5u.com熱心網友回復:
樓主,你QQ多少啊?我想請教你一些問題,咱們一定有互補。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/83382.html
標籤:基礎類
上一篇:求解 NKOJ3639
下一篇:求教,這個程式有什么問題?
