奇妙な問題があります。以下のコードをコンパイルしようとすると、期待どおりに失敗することなく動作します。
#include <iostream>
#include <Windows.h>
int main(){
FILE *f = fopen("trystl.geo","w");
fprintf(f,"Merge \"trystl.stl\";");
fprintf(f,"\n");
fprintf(f,"Surface Loop(2) = {1};");
fprintf(f,"\n");
fprintf(f,"Volume(3) = {2};");
fclose(f);
return 0;
}
しかし、このプログラムを FLTK ユーザー インターフェイスのボタンに接続しようとすると、アサーション ランタイム エラーが発生します。私のコードのセグメント:
void UserInterface::cb_m_BtnSTLToGEOConverter_i(Fl_Button*, void*){
//OnSTLToGEOConvert();
FILE *f = fopen("trystl.geo","w");
fprintf(f,"Merge \"trystl.stl\";");
fprintf(f,"\n");
fprintf(f,"Surface Loop(2) = {1};");
fprintf(f,"\n");
fprintf(f,"Volume(3) = {2};");
fclose(f);
}
void UserInterface::cb_m_BtnSTLToGEOConverter(Fl_Button* o, void* v){
((UserInterface*)(o->parent()->parent()->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_m_BtnSTLToGEOConverter_i(o,v);
}
ユーザーがボタンを押すと、プログラムが trystl.geo というファイルを作成し、示されている操作を実行するようにします。しかし、プログラムをコンパイルして開き、ボタンをクリックすると、次のように表示されます。
デバッグ アサーションに失敗しました!
プログラム: *.......\src\fprintf.c 55 行目:
式: (str! NULL)
再試行を中止するか、無視します...
Visual Studio 2010 を使用しています。