VC++2005 で C言語ソースをコンパイルする方法
C言語のプログラムをデバックしたいけど実機やデバッカーが無かったりしてデバックできないことあります。
VC++6.0であれば以下の①を行うとコンパイルが通るのですが VC++2005だとコンパイルが通りませんでした。
しかし、②を行えばコンパイルできるようになりました。
①プリコンパイル済みヘッダーの作成/使用 -> プリコンパイル済みヘッダーを使用しない
②C言語のソースは、拡張子を[.h]にし、 namespace と extern "C" を追加する。
例)プロジェクト名 "Mypro" とし、Form に button1 と textbox1 を配置し、
button1 をクリックすると C言語のソースである sample.h でセットした文字列を textbox に表示するというプログラムです。
--------------------------
[ sample.h ]
--------------------------
namespace Mypro { // namespace を追加( Mypro はプロジェクト名 )
extern "C" { // extern "C" を追加
char abab[] = "aaaa";
char* sub(){
return (char*)&abab;
}
}
}
--------------------------
[ Form1.h の抜粋 ]
--------------------------
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
char* buf = sub();
this->textBox1->Text = System::Runtime::InteropServices::Marshal::PtrToStringAnsi((IntPtr)buf);
}