線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2727
推到 Plurk!
推到 Facebook!

關於影像的程式,是在執行build的時候,連結出了問題,下面有參考code及擋案,請問要如何解決﹖

尚未結案
david_123
一般會員


發表:3
回覆:3
積分:1
註冊:2007-05-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-28 11:41:11 IP:59.124.xxx.xxx 訂閱
#include "camera_etb.h"
#include "CameraModuleDLL.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
unsigned short sensor;
unsigned long set_sensor,address;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND display;

DLL_DefineCommunicateMethod(0);
DLL_PowerOnActiveSensor(display,sensor);
DLL_StartLiveView();
DLL_SetDisplayOut(False);
DLL_SetCameraI2CAddressToMCU(address);
DLL_SetCameraSensorTypeToMCU(set_sensor);


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
DLL_StopLiveView();
DLL_PowerOffActiveSensor();
}
[Linker Error] 'D:\DOCUMENTS AND SETTINGS\STANLEY CHUNG\桌面\TEST PROGRAM\CAMERA\HXTLVLIB.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-28 11:52:36 IP:211.22.xxx.xxx 未訂閱
你是否以BCB去呼叫VC++COMPILE出來的DLL?BCB的BINARY EXECUTABLE是OMF格式,而VC的是COFF格式,因此,使用呼叫前要轉換。
如果是,請在KTOP搜尋如何以BCB呼叫VC的DLL函數檔。
===================引 用 david_123 文 章===================
#include "camera_etb.h"
#include "CameraModuleDLL.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
unsigned short sensor;
unsigned long set_sensor,address;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
HWND display;

DLL_DefineCommunicateMethod(0);
DLL_PowerOnActiveSensor(display,sensor);
DLL_StartLiveView();
DLL_SetDisplayOut(False);
DLL_SetCameraI2CAddressToMCU(address);
DLL_SetCameraSensorTypeToMCU(set_sensor);


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
DLL_StopLiveView();
DLL_PowerOffActiveSensor();
}
[Linker Error] 'D:\DOCUMENTS AND SETTINGS\STANLEY CHUNG\桌面\TEST PROGRAM\CAMERA\HXTLVLIB.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
david_123
一般會員


發表:3
回覆:3
積分:1
註冊:2007-05-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-28 15:13:12 IP:59.124.xxx.xxx 訂閱
void __fastcall TForm1::Button3Click(TObject *Sender)
{
HINSTANCE hInst;

hInst = LoadLibrary("HxtLVLib.DLL");
(FARPROC &)ShowImage=GetProcAddress(hInst,"ShowImage");
ShowImage();
FreeLibrary(hInst);
}
[Linker Fatal Error] Fatal: Unable to open file 'HXTLVLIB.LIB'
以上的程式是直接呼叫dll,可是寫了之後卻發現Linker的錯誤,請問一下我程式那裡要做修正﹖

soonbedone
一般會員


發表:1
回覆:9
積分:7
註冊:2005-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-30 21:18:17 IP:124.8.xxx.xxx 訂閱
建議您查看一下 主選單裏的 Project --> Options --> Packages 中是否有引用到
那個特定的 Lib 函式庫, 卻未把它的路徑設定進來,
導致 Linker 找不到該檔案..

Delphi 不是秘密警察啦 ! 她不會聰明到看了 LoadLibrary() 就自己知道是去聯結 .Lib 檔 !
(LoadLibrary 是 Load DLL 進來跟靜態聯結不同;
或建議你換個常用的方式, 把 VC 的那個 .Lib Export 成為只含有函式宣告的 BC 專用 .Lib,
並且手動加一些宣告到你的程式碼中, 這樣聯結就會 pass 了, 然後你實際上是用 LoadLibrary 去動態聯結)
------
~~ 縱想要有, 天不從人願 ~~
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-30 23:19:29 IP:210.64.xxx.xxx 未訂閱
兩點小小看法
1.OMF(Object Module Format )、COFF(Common Object File Format )指的是Borland 跟 MS 使用的 OBJs 檔案格式與 DLL 無關,DLL 是 PE format 。
2.使用LoadLibrary 動態載入 DLL 並不需要 LIB。
------
~§~迷時師渡,悟了自渡~§~
編輯記錄
harpist 重新編輯於 2007-05-30 23:20:07, 註解 無‧
soonbedone
一般會員


發表:1
回覆:9
積分:7
註冊:2005-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-05-31 21:07:16 IP:124.8.xxx.xxx 訂閱
sorry, 小弟我也忘了, 是快七年前遇到類似這種事, 詳細處理方式我也淡忘了, 所以在下所說的可能有點不對, 僅供參考...
那時是我大哥在電信總局寫程式 (BCB, Delphi, power builder..), 遇到廠商的刷卡機所附的是 VC 的 .Lib
因為廠商是跟美國進貨的, 廠商他們不會電腦也愛莫能助... (但有 .DLL 可供呼叫, 算是一線生機)
因為老弟我在家當宅男, 閒閒沒事, 就試了一下...
----
首先, 用 TLIB.EXE 觀察那個 VC 的 .LIB 裏的 .OBJ 有哪些是你想要的, 然後把他的 .OBJ 抓出來
再把想要的這些 .OBJ 運用 IMPLIB.EXE 包裝成供靜態載入 DLL 專用的 .LIB
(後來我大哥說, 用 IMPDEF.exe 從 .DLL 抓出其 .DEF 檔, 可以省下手打函式定義的時間)
----
以上載入 DLL 的方式, 是謂靜態載入 DLL, 請參閱以下網址文章...
http://www2.borland.com.tw/tw/td001018.html -->請看 Implicitly Link ( 隱 式 聯 結 ) 又 稱 靜 態 載 入 ...
會手動做這種事的人, 不是玩電腦很多年的老鳥 (像我大哥玩了 20 多年, 我也差不多了[不過我當醫生很忙, 要打折一半, 算 9 年好了]...),
不然就是駭客一族, 手邊的資料相當有限, 公司常要你反組譯別人的原始碼, 然後做相容產品....
------
~~ 縱想要有, 天不從人願 ~~
soonbedone
一般會員


發表:1
回覆:9
積分:7
註冊:2005-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-31 21:22:22 IP:124.8.xxx.xxx 訂閱
再次的說 Sorry !!
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=83851
這篇文章有較正確的做法...
------
~~ 縱想要有, 天不從人願 ~~
david_123
一般會員


發表:3
回覆:3
積分:1
註冊:2007-05-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-06-04 10:24:48 IP:59.124.xxx.xxx 訂閱
感謝你們的回覆....我會試試看的﹗
系統時間:2024-05-02 5:38:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!