VC2008產生的lib檔無法透過BCB6的COFF2OMF.exe正常轉檔, 是否有其他方式可以做檔案轉換? |
尚未結案
|
shonecheng
一般會員 發表:1 回覆:1 積分:0 註冊:2018-01-22 發送簡訊給我 |
我使用VC2008建立了一個lib檔, 內容只有建立一個函式做printf()字串輸出.
接著使用BCB6的COFF2OMF.exe將該lib檔做格式轉換, 原本的VC lib檔有6KB大小, 轉換後卻只有512byte大小 後來我一樣用BCB6建立了個console專案, 並將512 byte的lib檔加入專案, include該library的header file, 並在main中呼叫該函式 結果compile時就出現如下error: [Linker Error] Unresolved external 'TestLibFunc()' referenced from D:\TESTVCLIB\UNIT1.OBJ 請問有人遇過類似的問題嗎? BCB6的COFF2OMF.exe是否無法處理VC2008的lib檔? 有其他方法可以做COFF跟OMF的格式轉換嗎? 謝謝! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
看看這個行不行
https://kkkor.tian.yam.com/posts/11547852 原出處來自於 [發表] (VC-BCB 整合系列一) 如何由 BCB 使用 VC 所產生的 LIB 及 DLL http://delphi.ktop.com.tw/board.php?cid=168&fid=923&tid=33420 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
shonecheng
一般會員 發表:1 回覆:1 積分:0 註冊:2018-01-22 發送簡訊給我 |
感謝回覆指導!
不過參照網頁說明執行後遇到下面問題: 使用VC2008預設的dll宣告: //TestdllNew.h #define TESTDLLNEW_API __declspec(dllimport) TESTDLLNEW_API int fnTestdllNew(void); //TestdllNew.cpp #include // This is an example of an exported function. TESTDLLNEW_API int fnTestdllNew(void) { printf("Hellow BCB lib from VC DLL\n"); return 42; } 編好TestdllNew.dll後, 執行方法1: implib -a -c -f mybcb.lib TestdllNew.dll ::a Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation Error ::TestdllNew.dll: unable to open file 會遇到error 去除::a 參數後 implib -a -c -f mybcb.lib TestdllNew.dll 執行可以成功, 見出mybcb.lib, 但是size只有1KB大小, TestdllNew.dll有29KB大小 執行方法2: impdef test.def TestdllNew.dll test.def內容會有很多問號: LIBRARY TESTDLLNEW.DLL EXPORTS ??0CTestdllNew@@QAE@XZ @1 ; ??0CTestdllNew@@QAE@XZ ??4CTestdllNew@@QAEAAV0@ABV0@@Z @2 ; ??4CTestdllNew@@QAEAAV0@ABV0@@Z ?fnTestdllNew@@YAHXZ @3 ; ?fnTestdllNew@@YAHXZ ?nTestdllNew@@3HA @4 ; ?nTestdllNew@@3HA 格式與範例也不太一樣 請問上述程序是否哪裡有問題呢? 謝謝! |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
我初步看,發現你可能有一個地方有誤會。 VC 與 BC 之間若要函式共用,只能是純C語言的函式。但你的例子中,並非是C,而是C++。 請參照以下的文章觀念
http://aftcast.pixnet.net/blog/post/22457055 另外,你說你做出來的LIB很小是正常的。LIB有分靜態與IMPORT LIB。若是IMPORT LIB 則是很小沒錯。 (不過話說你例子中的那個很小的LIB也是不能用,原因如上)
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
VC static library 要給BCB ?不行
解決方案,用VC將Lib包成DLL BCB用動態載入的方式使用該DLL ===================引 用 shonecheng 文 章=================== 我使用VC2008建立了一個lib檔, 內容只有建立一個函式做printf()字串輸出. 接著使用BCB6的COFF2OMF.exe將該lib檔做格式轉換, 原本的VC lib檔有6KB大小, 轉換後卻只有512byte大小 後來我一樣用BCB6建立了個console專案, 並將512 byte的lib檔加入專案, include該library的header file, 並在main中呼叫該函式 結果compile時就出現如下error: [Linker Error] Unresolved external 'TestLibFunc()' referenced from D:\TESTVCLIB\UNIT1.OBJ 請問有人遇過類似的問題嗎? BCB6的COFF2OMF.exe是否無法處理VC2008的lib檔? 有其他方法可以做COFF跟OMF的格式轉換嗎? 謝謝! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |