- 締切済み
BC++Builderで作成したDLLをBC++で使用した時エラーが
BC++Builder5で作成したDLLを、BC++5.02Jで作成するプログラムで使用した時にエクスプローラなどで実行した時には正常なのですが、他プログラム中からShellExecuteなどで起動させた時にLoadLibraryでDLLアドレス例外処理が発生してしまう。なぜだか解る人いませんか?DLLの作成方法が悪いのでしょうか? ちょっと煮つまってしまいました(-_-;)
- みんなの回答 (1)
- 専門家の回答
みんなの回答
noname#9414
回答No.1
DLLはどこに置いているのでしょうか? きちんとSystem(32)ディレクトリにおいてある のでしょうか? 補足してください。たぶんそちらの方が的確な 回答が付くと思いますよ。 #もう少し環境を詳しくね・・・ ではでは☆
補足
閲覧して頂きましてありがとうございました。 補足してみました。 もし気が付く点がありましたら、またご指導お願い致します。 OS:WIN98SE 言語:BC++Builder5 (使用し始めてまだ数週間) BC++5.02J (OWL/WIN32を用いてここ数年愛用) 目的:BC++には無いJPEG伸張/圧縮処理が欲しく、BC++BuilderのJPEGの機能をDLL化。 ※ 下記に一部抜粋 ● BC++Builder (C:¥WINDOWS¥SYSTEM¥JPEG_DLL.DLL) #include <vcl.h> #include <windows.h> #include <graphics.hpp> #include <jpeg.hpp> #pragma hdrstop #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } extern "C" __declspec( dllexport ) void __stdcall jpg_to_bmp( char *j_path, char *b_path ); void __stdcall jpg_to_bmp( char *j_path, char *b_path ) { TJPEGImage *jp; Graphics::TBitmap *bp; jp = new TJPEGImage(); bp = new Graphics::TBitmap(); jp->LoadFromFile( j_path ); bp->Assign( jp ); bp->SaveToFile( b_path ); delete bp; delete jp; } ● BC++ (C:¥JPEG_VIEW¥JPEG_VIEW.EXE) extern "C" __declspec( dllimport ) void _stdcall jpg_to_bmp( char*, char* ); void ( PASCAL *b_JpgToBmp )( char *j_path, char *b_path ); HINSTANCE jpegLIB; void DLG01_Inp::SetupWindow() { TDialog::SetupWindow(); jpegLIB = LoadLibrary( "Jpeg_dll.dll" ); if ( (unsigned)jpegLIB <= HINSTANCE_ERROR ) TDialog::CloseWindow(); b_JpgToBmp = ( void ( PASCAL * )( char*, char* ) )GetProcAddress( jpegLIB, "jpg_to_bmp" ); } void DLG01_Inp::CleanupWindow() { TDialog::CleanupWindow(); FreeLibrary( jpegLIB ); } ● BC++ (C:¥JPEG_TEST¥JPEG_TEST.EXE) void DLG01_Inp::ev_button01() { ShellExecute( HWindow, "open", "c:\\jpeg_view\\jpeg_view.exe", NULL, NULL, SW_SHOWNORMAL ); }