最新閲覧日:

BC++Builder5で作成したDLLを、BC++5.02Jで作成するプログラムで使用した時にエクスプローラなどで実行した時には正常なのですが、他プログラム中からShellExecuteなどで起動させた時にLoadLibraryでDLLアドレス例外処理が発生してしまう。なぜだか解る人いませんか?DLLの作成方法が悪いのでしょうか? ちょっと煮つまってしまいました(-_-;)

このQ&Aに関連する最新のQ&A

A 回答 (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 );
}

補足日時:2001/07/07 15:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報