2009年3月24日 星期二

BCB DLL 用到的東西

有個BCB 做的DLL,在有安裝BCB的程式可以正常跑,但是到其他沒安裝BCB得電腦去使用的時候
在C#呼叫會出現找不到模組的錯誤訊息

這個原因上網找發現可能是他在BCB編譯的時候
Options.../Packages裡面 把Build with runtime packages打勾取消掉了
這個動作是用來不要把runtime packages一起包進我們的程式內來減少執行檔的大小
但是把這程式給沒裝BCB的人用就會少了那些runtime packages而不能執行

要知道DLL用到那些東西 也可以使用BCB的工具來檢視需要哪些packages
在BCB/bin目錄裡面有TDUMP.EXE的工具
命令列下指令
tdump.exe -em 你的dll 就會輸出下列結果
tdump.exe -em YOW778COMM.DLL
Turbo Dump Version 5.0.16.12 Copyright (c) 1988, 2000 Inprise Corporation
Display of File YOW778COMM.DLL

IMPORT: vcl60.bpl='__fastcall Consts::initialization()'
IMPORT: vcl60.bpl='__fastcall Consts::Finalization()'
IMPORT: vcl60.bpl='__fastcall Graphics::initialization()'
IMPORT: vcl60.bpl='__fastcall Graphics::Finalization()'
IMPORT: vcl60.bpl='__fastcall Printers::initialization()'
IMPORT: vcl60.bpl='__fastcall Printers::Finalization()'
IMPORT: vcl60.bpl='__fastcall Stdctrls::initialization()'
IMPORT: vcl60.bpl='__fastcall Stdctrls::Finalization()'
IMPORT: vcl60.bpl='__fastcall Extctrls::initialization()'
IMPORT: vcl60.bpl='__fastcall Extctrls::Finalization()'
IMPORT: vcl60.bpl='__fastcall Dialogs::initialization()'
IMPORT: vcl60.bpl='__fastcall Dialogs::Finalization()'
IMPORT: vcl60.bpl='__fastcall Clipbrd::initialization()'
IMPORT: vcl60.bpl='__fastcall Clipbrd::Finalization()'
IMPORT: vcl60.bpl='__fastcall Stdactns::initialization()'
IMPORT: vcl60.bpl='__fastcall Stdactns::Finalization()'
IMPORT: vcl60.bpl='__fastcall Winhelpviewer::initialization()'
IMPORT: vcl60.bpl='__fastcall Winhelpviewer::Finalization()'
IMPORT: vcl60.bpl='__fastcall Actnlist::initialization()'
IMPORT: vcl60.bpl='__fastcall Actnlist::Finalization()'
IMPORT: vcl60.bpl='__fastcall Forms::initialization()'
IMPORT: vcl60.bpl='__fastcall Forms::Finalization()'
IMPORT: vcl60.bpl='__fastcall Forms::TApplication::MessageBox(const char
*, const char *, int)'
IMPORT: vcl60.bpl='Forms::Application'
IMPORT: vcl60.bpl='__fastcall Imglist::initialization()'
IMPORT: vcl60.bpl='__fastcall Imglist::Finalization()'
IMPORT: vcl60.bpl='__fastcall Menus::initialization()'
IMPORT: vcl60.bpl='__fastcall Menus::Finalization()'
IMPORT: vcl60.bpl='__fastcall Controls::initialization()'
IMPORT: vcl60.bpl='__fastcall Controls::Finalization()'
IMPORT: rtl60.bpl='__fastcall System::initialization()'
IMPORT: rtl60.bpl='__fastcall System::Finalization()'
IMPORT: rtl60.bpl='System::__linkproc__ __fastcall LStrSetLength()'
IMPORT: rtl60.bpl='System::__linkproc__ __fastcall LStrCat3()'
IMPORT: rtl60.bpl='System::__linkproc__ __fastcall LStrCat()'
IMPORT: rtl60.bpl='System::__linkproc__ __fastcall LStrFromPChar(System::
AnsiString&, char *)'
IMPORT: rtl60.bpl='System::__linkproc__ __fastcall LStrAsg(void *, const
void *)'
IMPORT: rtl60.bpl='System::__linkproc__ __fastcall LStrClr(void *)'
IMPORT: rtl60.bpl='System::__linkproc__ __fastcall HandleFinally()'
IMPORT: rtl60.bpl='__fastcall System::TObject::~TObject()'
IMPORT: rtl60.bpl='__fastcall Types::initialization()'
IMPORT: rtl60.bpl='__fastcall Types::Finalization()'
IMPORT: rtl60.bpl='__fastcall Sysconst::initialization()'
IMPORT: rtl60.bpl='__fastcall Sysconst::Finalization()'
IMPORT: rtl60.bpl='__fastcall Sysutils::initialization()'
IMPORT: rtl60.bpl='__fastcall Sysutils::Finalization()'
IMPORT: rtl60.bpl='__fastcall Varutils::initialization()'
IMPORT: rtl60.bpl='__fastcall Varutils::Finalization()'
IMPORT: rtl60.bpl='__fastcall Variants::initialization()'
IMPORT: rtl60.bpl='__fastcall Variants::Finalization()'
IMPORT: rtl60.bpl='__fastcall Rtlconsts::initialization()'
IMPORT: rtl60.bpl='__fastcall Rtlconsts::Finalization()'
IMPORT: rtl60.bpl='__fastcall Typinfo::initialization()'
IMPORT: rtl60.bpl='__fastcall Typinfo::Finalization()'
IMPORT: rtl60.bpl='__fastcall Activex::initialization()'
IMPORT: rtl60.bpl='__fastcall Activex::Finalization()'
IMPORT: rtl60.bpl='__fastcall Classes::initialization()'
IMPORT: rtl60.bpl='__fastcall Classes::Finalization()'
IMPORT: rtl60.bpl='__fastcall Math::initialization()'
IMPORT: rtl60.bpl='__fastcall Math::Finalization()'
IMPORT: rtl60.bpl='__fastcall Contnrs::initialization()'
IMPORT: rtl60.bpl='__fastcall Contnrs::Finalization()'
IMPORT: rtl60.bpl='__fastcall Strutils::initialization()'
IMPORT: rtl60.bpl='__fastcall Strutils::Finalization()'
IMPORT: rtl60.bpl='__fastcall Helpintfs::initialization()'
IMPORT: rtl60.bpl='__fastcall Helpintfs::Finalization()'
IMPORT: rtl60.bpl='__fastcall Flatsb::initialization()'
IMPORT: rtl60.bpl='__fastcall Flatsb::Finalization()'
IMPORT: rtl60.bpl='__fastcall Multimon::initialization()'
IMPORT: rtl60.bpl='__fastcall Multimon::Finalization()'
IMPORT: KERNEL32.DLL='Beep'
IMPORT: KERNEL32.DLL='BuildCommDCBA'
IMPORT: KERNEL32.DLL='ClearCommError'
IMPORT: KERNEL32.DLL='CloseHandle'
IMPORT: KERNEL32.DLL='CreateFileA'
IMPORT: KERNEL32.DLL='FreeLibrary'
IMPORT: KERNEL32.DLL='GetCommState'
IMPORT: KERNEL32.DLL='GetLastError'
IMPORT: KERNEL32.DLL='GetModuleHandleA'
IMPORT: KERNEL32.DLL='GetProcAddress'
IMPORT: KERNEL32.DLL='GetProcessHeap'
IMPORT: KERNEL32.DLL='GetTickCount'
IMPORT: KERNEL32.DLL='GetVersion'
IMPORT: KERNEL32.DLL='HeapAlloc'
IMPORT: KERNEL32.DLL='HeapFree'
IMPORT: KERNEL32.DLL='LoadLibraryA'
IMPORT: KERNEL32.DLL='PurgeComm'
IMPORT: KERNEL32.DLL='ReadFile'
IMPORT: KERNEL32.DLL='SetCommMask'
IMPORT: KERNEL32.DLL='SetCommState'
IMPORT: KERNEL32.DLL='SetCommTimeouts'
IMPORT: KERNEL32.DLL='SetupComm'
IMPORT: KERNEL32.DLL='Sleep'
IMPORT: KERNEL32.DLL='WriteFile'
IMPORT: WSOCK32.DLL116( 74h)
IMPORT: WSOCK32.DLL115( 73h)
IMPORT: WSOCK32.DLL3( 3h)
IMPORT: WSOCK32.DLL4( 4h)
IMPORT: WSOCK32.DLL9( 9h)
IMPORT: WSOCK32.DLL10( Ah)
IMPORT: WSOCK32.DLL16( 10h)
IMPORT: WSOCK32.DLL18( 12h)
IMPORT: WSOCK32.DLL19( 13h)
IMPORT: WSOCK32.DLL23( 17h)
IMPORT: CC3260MT.DLL='operator delete(void *)'
IMPORT: CC3260MT.DLL='_CatchCleanup()'
IMPORT: CC3260MT.DLL='_InitTermAndUnexPtrs()'
IMPORT: CC3260MT.DLL='__ErrorExit'
IMPORT: CC3260MT.DLL='__ErrorMessage'
IMPORT: CC3260MT.DLL='___CRTL_MEM_UseBorMM'
IMPORT: CC3260MT.DLL='___CRTL_TLS_Alloc'
IMPORT: CC3260MT.DLL='___CRTL_TLS_ExitThread'
IMPORT: CC3260MT.DLL='___CRTL_TLS_Free'
IMPORT: CC3260MT.DLL='___CRTL_TLS_GetValue'
IMPORT: CC3260MT.DLL='___CRTL_TLS_InitThread'
IMPORT: CC3260MT.DLL='___CRTL_TLS_SetValue'
IMPORT: CC3260MT.DLL='____ExceptionHandler'
IMPORT: CC3260MT.DLL='___errno'
IMPORT: CC3260MT.DLL='__argv_default_expand'
IMPORT: CC3260MT.DLL='__free_heaps'
IMPORT: CC3260MT.DLL='__handle_exitargv'
IMPORT: CC3260MT.DLL='__handle_setargv'
IMPORT: CC3260MT.DLL='__handle_wexitargv'
IMPORT: CC3260MT.DLL='__handle_wsetargv'
IMPORT: CC3260MT.DLL='__ltolower'
IMPORT: CC3260MT.DLL='__startupd'
IMPORT: CC3260MT.DLL='__wargv_default_expand'
IMPORT: CC3260MT.DLL='_atol'
IMPORT: CC3260MT.DLL='_isdigit'
IMPORT: CC3260MT.DLL='_memcmp'
IMPORT: CC3260MT.DLL='_memcpy'
IMPORT: CC3260MT.DLL='_memset'
IMPORT: CC3260MT.DLL='_printf'
IMPORT: CC3260MT.DLL='_sprintf'
IMPORT: CC3260MT.DLL='_strcat'
IMPORT: CC3260MT.DLL='_strcmp'
IMPORT: CC3260MT.DLL='_strcpy'
IMPORT: CC3260MT.DLL='_strerror'
IMPORT: CC3260MT.DLL='_strlen'
IMPORT: CC3260MT.DLL='_strncpy'
IMPORT: CC3260MT.DLL='_strstr'
IMPORT: CC3260MT.DLL='_vsnprintf'


如此可以知道他用到了CC3260MT.DLL,rtl60.bpl,vcl60.bpl這三個裝了BCB才會有的檔案

另外整份的Borland_Cpp_6_Runtime可以從這邊下載
http://www.astrosurf.com/rondi/programmes/Borland_Cpp_6_Runtime.exe

2009年3月4日 星期三

這是部落格沒錯


這是部落格沒錯阿,我只是還沒寫而已阿!

文筆不好啦!不會寫啦