こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ifjpeg.spiを呼び出すプログラムでエラー

現在、Code Gear C++ Builder 2009 でプログラミングをしていて、ifjpeg.spiというDLLファイルの読み出しプログラムを作成しているのですが、


コマンドボタンを押して、”ProcGetPluginInfo”というデータをとりだすというプログラムなのですが、


[ILINK32 エラー] Error: 未解決の外部参照 '__fastcall TMainForm::CallButtonClick(System::TObject *)' が C:\・・(中略)・・・\VC_TEST\CPP_BUILDER_2009\TEST_PICTURE_VIEW\RELEASE\UNIT1.OBJ から参照されました


このようなエラーが出てきます。
解決方法ご存じの方いらっしゃいませんでしょうか?







void __fastcall TMainForm::InfoButtonClick(TObject *Sender)
{

char buf[80];
HINSTANCE hSPI = LoadLibrary(PluginNameEdit->Text.c_str());
//HINSTANCE hSPI = LoadLibrary("ifjpeg.spi");
//HINSTANCE hSPI;


//ロードエラー
if( hSPI == NULL ){

ShowMessage("プラグインファイルがロードできません");
return;

}

ProcGetPluginInfo GetPluginInfo =
(ProcGetPluginInfo)GetProcAddress(hSPI,"GetPluginInfo");

//アドレス取得エラー
if( GetPluginInfo == NULL ){
ShowMessage("Susieプラグインではありません");
FreeLibrary(hSPI);
return;

}

//情報0
GetPluginInfo(0,buf,80);
Memo1->Lines->Add(buf);
//Memo->Lines->Add(buf);

//情報1
GetPluginInfo(1,buf,80);
Memo1->Lines->Add(buf);

//情報2
for( int i=0; GetPluginInfo(i*2+2, buf, 80) > 0; i++){

Memo1->Lines->Add(buf);
GetPluginInfo(i*2+3,buf,80);
Memo1->Lines->Add(buf);

}

FreeLibrary(hSPI);


}
//---------------------

投稿日時 - 2012-05-09 10:55:49

QNo.7466106

すぐに回答ほしいです

質問者が選んだベストアンサー

>未解決の外部参照 '__fastcall TMainForm::CallButtonClick

「CallButtonClick」の宣言が、unit1.hppにあって、関数の本体がunit1.cppに存在しない時に、このエラーが出ます。

>void __fastcall TMainForm::InfoButtonClick(TObject *Sender)

この関数は「InfoButtonClick」ですので、エラーには何の関係もありません。

最初に「CallButton」って名前でボタンを配置し、あとで「InfoButton」に名称変更し、Unit1.cppのソースコードだけ「Call→Info」に修正し、Unit1.hppの方の宣言部を修正し忘れてるんじゃないかと思います。

投稿日時 - 2012-05-09 12:28:36

お礼

回答頂きありがとうございました!


Unit1.hppを確認したところ





void __fastcall CallButtonClick(TObject *Sender);
void __fastcall InfoButtonClick(TObject *Sender);




このうちの

//void __fastcall CallButtonClick(TObject *Sender);

これをコメントアウトしたら、ビルド通りました! 助かりました!

投稿日時 - 2012-05-09 15:36:27

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問