全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1846
推到 Plurk!
推到 Facebook!

加入DLL的問題

尚未結案
Patric_Chuang
一般會員


發表:5
回覆:12
積分:3
註冊:2003-03-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-03 18:41:53 IP:61.59.xxx.xxx 未訂閱
請問各位高手們,一般的DLL在BCB下使用的方法和VC相同嗎??在VC下小弟我只設定Tools/Options中的Directories頁中將include files 及 Library files 的路徑指向我的.lib檔,和Project/settings中的Link頁中,將.lib檔的檔名(例如dsk6x11hpi.lib) 加在Object/library modules中,做編譯及連結可以完成。(這些是DSP單版附的dsk6x11hpi.h  dsk6x11hpi.lib 及dsk6x11hpi.dll) 小弟我在BCB中也做相同設定,在Project/Options中Directories/Conditionals頁中設定Include path 及 Library path的路徑指向我的.lib檔,在Link時會出現   [Linker Error] Unresolved external '_dsk6x_open' referenced from E:\CBUILDER\DSPTEST\MAIN.OBJ 的訊息,若用Add To Project將.lib檔加入(例如dsk6x11hpi.lib) Project中,在Link時會出現[Linker Error] 'C:\TI\C6000\DSK6X11\LIB\DSK6X11HPI.LIB' contains invalid OMF record, type 0x21 (possibly COFF)的訊息,以下是小弟的程式碼,在VC下可以完成,但在BCB中會出現上述的問題,希望各位高手大大們能幫忙解決,謝謝    ///////////main.cpp//////////////////////////// #include "dsk6x11hpi.h" #include  #define HPI_endian 0; #define HPI_boot 1; #define verbose_flag FALSE; #define clear_bss_flag FALSE; #define dump_flag FALSE; char *pfname="C:\ti_ppdsk.cfg"; dskHANDLE handle; PdskDLL_BOARD_TYPE board_type; unsigned short rev_vid; unsigned long p_buffer; unsigned long p_length; unsigned long src_addr; unsigned long dest_addr; unsigned long fill_value; void main() { if (dsk6x_open(pfname,&handle)) cout<<"true"< typedef enum { TYPE_UNKNOWN = 0, TYPE_6211_DSK, TYPE_6711_DSK } dskDLL_BOARD_TYPE, *PdskDLL_BOARD_TYPE; typedef void * dskHANDLE; #ifdef __cplusplus extern "C" { #endif extern BOOL dsk6x_open(char *, dskHANDLE*); extern BOOL dsk6x_close(dskHANDLE ); extern BOOL dsk6x_board_type( dskHANDLE , PdskDLL_BOARD_TYPE, unsigned short *); extern BOOL dsk6x_hpi_open(dskHANDLE ); extern BOOL dsk6x_hpi_close(dskHANDLE ); extern BOOL dsk6x_reset_dsp(dskHANDLE,unsigned char,unsigned char); extern BOOL dsk6x_reset_board(dskHANDLE); extern BOOL dsk6x_hpi_read(dskHANDLE ,unsigned long *, unsigned long *, unsigned long); extern BOOL dsk6x_hpi_write(dskHANDLE ,unsigned long *,unsigned long *, unsigned long); extern BOOL dsk6x_hpi_fill(dskHANDLE ,unsigned long,unsigned long *,unsigned long); extern BOOL dsk6x_hpi_generate_int(dskHANDLE ); extern int dsk6x_coff_load(dskHANDLE ,char *, BOOL, BOOL, BOOL); #ifdef __cplusplus } #endif
Royce520
高階會員


發表:18
回覆:157
積分:100
註冊:2002-09-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-04 00:41:16 IP:61.216.xxx.xxx 未訂閱
Patric_Chuang 你好,   如果我沒有記錯, vc 用的 dll 好像有些不能拿來直接使用地   你可以用 LoadLibrary 動態的載入, 再取得各個函式的指標   就可以呼叫使用了  <><>*真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩
integrand
一般會員


發表:8
回覆:27
積分:17
註冊:2002-10-22

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-04 01:27:17 IP:218.163.xxx.xxx 未訂閱
如果你想透過lib檔去鏈結的話 你可以嘗試下列兩個方法: Ⅰ用bin目錄下一個工具程式implib產生對應dll的lib檔 Ⅱ用bin目錄下另一個工具程式coff2omf將適用於vc的lib檔轉成bcb適用 用範例程式wintools去做這兩件事還蠻方便的
Royce520
高階會員


發表:18
回覆:157
積分:100
註冊:2002-09-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-04 01:38:20 IP:61.216.xxx.xxx 未訂閱
Patric_Chuang 你好,   這裡 http://www.bcbdev.com/articles/vcdll.htm 有較詳盡的 dll 差異的說明(The problem with Visual C DLLs) 及解決方法, 你也可以那樣如法炮製 <><>*真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩
Patric_Chuang
一般會員


發表:5
回覆:12
積分:3
註冊:2003-03-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-05 15:58:40 IP:61.59.xxx.xxx 未訂閱
引言: 如果你想透過lib檔去鏈結的話 你可以嘗試下列兩個方法: Ⅰ用bin目錄下一個工具程式implib產生對應dll的lib檔 Ⅱ用bin目錄下另一個工具程式coff2omf將適用於vc的lib檔轉成bcb適用 用範例程式wintools去做這兩件事還蠻方便的
感謝integrand 兄的幫忙,您所提的第一個方法小弟也試過了,但不行,也會出現[Linker Error] Unresolved external '_dsk6x_open' referenced from E:\CBUILDER\DSPTEST\MAIN.OBJ 的訊息,小弟會試試integrand 兄所提的第二個方法,看看結果如何,謝謝integrand 兄的幫忙
Patric_Chuang
一般會員


發表:5
回覆:12
積分:3
註冊:2003-03-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-05 16:05:36 IP:61.59.xxx.xxx 未訂閱
引言: Patric_Chuang 你好, 這裡 http://www.bcbdev.com/articles/vcdll.htm 有較詳盡的 dll 差異的說明(The problem with Visual C DLLs) 及解決方法, 你也可以那樣如法炮製 <><>*真實的事物最美, 簡單的道理最好, 我能體會的 太少*
謝謝Royce520兄提供這方面的資訊,使小弟對這方面的知識有更進一步的認識 ,小弟也會試試Royce520兄所提的方法,若有問題還希望各位能多多幫忙,小 弟在這方面還是一個新手,再次感謝各位不厭其煩的對小弟作講解,謝謝
Patric_Chuang
一般會員


發表:5
回覆:12
積分:3
註冊:2003-03-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-09 12:25:05 IP:61.59.xxx.xxx 未訂閱
引言: 如果你想透過lib檔去鏈結的話 你可以嘗試下列兩個方法: Ⅰ用bin目錄下一個工具程式implib產生對應dll的lib檔 Ⅱ用bin目錄下另一個工具程式coff2omf將適用於vc的lib檔轉成bcb適用 用範例程式wintools去做這兩件事還蠻方便的
感謝integrand 兄,小弟利用您所提的第二種,可以解決小弟的問題,再次感謝integrand 兄對小弟的指導
系統時間:2024-05-03 9:40:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!