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

[BCB] [問題] VC dll lib無法使用

尚未結案
stevenhschen
一般會員


發表:3
回覆:4
積分:1
註冊:2005-01-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-01 17:40:09 IP:61.30.xxx.xxx 未訂閱
我的平台是BCB6+WIN XP試著用網上的資源 嘗試了以下方法 1. implib XXX.lib XXX.dll 2. impdef XXX.def XXX.dll -->implib XXX.lib XX.def 3. coff2omf In.lib Out.lib    可是依然得到Error訊息 [Linker Error] Unresolved external '__stdcall VendorCommandBulkWrite64(unsigned char, unsigned short, unsigned short, unsigned short, unsigned char *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\TESTSUNPLUS_1\MAIN.OBJ    程式 dlllist.H int __declspec(dllexport) __stdcall VendorCommandBulkWrite64(                 UCHAR Request,                  USHORT Index,                  USHORT Value,                  USHORT Length,                   PUCHAR Buffer                         );    main.CPP.    #include  #pragma hdrstop #include "Main.h" #include "dlllist.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int z; UCHAR BUFFER[64]; z=VendorCommandBulkWrite64(0x24,0,0,1,&BUFFER[0]); //ShowMessage(z); } //--------------------------------------------------------------------------- 請問各位大大我還有什麼方法可以嘗試 謝謝
stevenhschen
一般會員


發表:3
回覆:4
積分:1
註冊:2005-01-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-01 22:27:08 IP:61.224.xxx.xxx 未訂閱
補上,我用tdump抓出的TXT Turbo Dump Version 5.0.16.12 Copyright (c) 1988, 2000 Inprise Corporation Display of File USB_CAM.DLL EXPORT ord:0001='?BadPixel_Dnload@@YAHPADP6AX0@Z@Z' EXPORT ord:0002='?BadPixel_DnloadEx@@YAHPADP6AX0@Z@Z' EXPORT ord:0003='?Capture_DOSFAT_DSC@@YAHXZ' 我有用tdump隨便抓個dll的TXT Turbo Dump Version 5.0.16.12 Copyright (c) 1988, 2000 Inprise Corporation Display of File IEFDM.DLL EXPORT ord:0001='DllCanUnloadNow' EXPORT ord:0002='DllGetClassObject' EXPORT ord:0003='DllRegisterServer' EXPORT ord:0004='DllUnregisterServer' 請問為何會差這麼多? 謝謝 我該如何改我的DEF? LIBRARY USB_CAM.DLL EXPORTS ?BadPixel_Dnload@@YAHPADP6AX0@Z@Z @1 ; ?BadPixel_Dnload@@YAHPADP6AX0@Z@Z ?BadPixel_DnloadEx@@YAHPADP6AX0@Z@Z @2 ; ?BadPixel_DnloadEx@@YAHPADP6AX0@Z@Z ?Capture_DOSFAT_DSC@@YAHXZ @3 ; ?Capture_DOSFAT_DSC@@YAHXZ ?Capture_DRAM_DSC@@YAHXZ @4 ; ?Capture_DRAM_DSC@@YAHXZ 謝謝
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-01 22:27:37 IP:220.130.xxx.xxx 未訂閱
引言: 我的平台是BCB6+WIN XP試著用網上的資源 嘗試了以下方法 1. implib XXX.lib XXX.dll 2. impdef XXX.def XXX.dll -->implib XXX.lib XX.def 3. coff2omf In.lib Out.lib 可是依然得到Error訊息 [Linker Error] Unresolved external '__stdcall VendorCommandBulkWrite64(unsigned char, unsigned short, unsigned short, unsigned short, unsigned char *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\TESTSUNPLUS_1\MAIN.OBJ 程式 dlllist.H int __declspec(dllexport) __stdcall VendorCommandBulkWrite64( UCHAR Request, USHORT Index, USHORT Value, USHORT Length, PUCHAR Buffer ); main.CPP. #include #pragma hdrstop #include "Main.h" #include "dlllist.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { int z; UCHAR BUFFER[64]; z=VendorCommandBulkWrite64(0x24,0,0,1,&BUFFER[0]); //ShowMessage(z); } //--------------------------------------------------------------------------- 請問各位大大我還有什麼方法可以嘗試 謝謝
stevenhschen 你好: 先參考以下這篇文章中的說明 (先試靜態連結,如果不行,再試動態連結) http://delphi.ktop.com.tw/topic.php?TOPIC_ID=33420 -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
stevenhschen
一般會員


發表:3
回覆:4
積分:1
註冊:2005-01-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-02 00:19:36 IP:61.224.xxx.xxx 未訂閱
Dear RaynorPao 您好 我剛剛試過了靜態連結還是不行 動態連結能夠Build成功 但是因為我手上沒有平台(這是內嵌式平台的Driver Control) 於是我隨便亂打了個沒有的指令(ex. ABC(int,int)) 結果居然依然能夠Build成功 請問動態連結是否不會先去找是否真的有此函數 只要語法對就能Build成功? 另外 我明天會綁上平台試試看 先謝謝您 StevenHSChen
stevenhschen
一般會員


發表:3
回覆:4
積分:1
註冊:2005-01-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-03 21:15:07 IP:61.30.xxx.xxx 未訂閱
包子大大    對不起 還是不行 可否幫我看看 我主要嘗試呼叫連接USB的一個裝置 使用 CheckBulkDriver 指令 錯誤訊息如下圖    #include  #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #define ERROR_SUCCESS 0 // The operation completed successfully. #define ERROR_INVALID_FUNCTION 1 // Incorrect function. #define ERROR_FILE_NOT_FOUND 2 // The system cannot find the file specified. #define ERROR_PATH_NOT_FOUND 3 // The system cannot find the path specified. #define ERROR_TOO_MANY_OPEN_FILES 4 // The system cannot open the file. #define ERROR_ACCESS_DENIED 5 // Access is denied. #define ERROR_INVALID_HANDLE 6 // The handle is invalid. //#define ERROR_ 7 // Reserve #define ERROR_NOT_ENOUGH_MEMORY 8 // Not enough storage is available to process this command. //#define ERROR_ 9 // Reserve //#define ERROR_ 10 // Reserve #define ERROR_FUNCTION_NOT_READY 82 // This software function is not support. TForm1 *Form1; typedef int (*CHECKBULKDRIVER)( PCHAR NameString ); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { char buffer[0x100]; UCHAR Buffer[64]; int Return_Status; int i; int m_bBULK; HINSTANCE dll=NULL; CHECKBULKDRIVER CheckBulkDriver=NULL; dll=LoadLibrary("USB_CAM.dll"); if(dll!=NULL) { CheckBulkDriver=(CHECKBULKDRIVER)GetProcAddress(dll,"CheckBulkDriver"); if(CheckBulkDriver!=NULL) { ShowMessage("Show1"); Return_Status = CheckBulkDriver(&buffer[18]); ShowMessage("Show2"); if( Return_Status != ERROR_SUCCESS ) { //sprintf(buffer, "#### Load Bulk Driver Fail ####"); //m_LIST_Information.AddString(buffer); //m_bBULK = FALSE; ShowMessage("FALSE"); return; } else { ShowMessage("TRUE"); //m_LIST_Information.AddString(buffer); //m_bBULK = TRUE; } } FreeLibrary(dll); } } //---------------------------------------------------------------------------
系統時間:2024-05-11 18:42:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!