2009年11月14日

C#からC++のライブラリを呼ぶ

VisualStudio C#でGUIを作成し、

VisualStudio C++のライブラリを利用するケースは多いと思う。


Vista時代のVisual C++の流儀」の連載が分かりやすい。

(επιστημηさんの記事だ)


ただ、64bitOS(たとえば、Windows7の64bit)では、

この連載通りには、C#からC++のライブラリを呼べない


コンパイルは通るけど、実行時に、以下のエラーが出る。

「BadImageFormatExceptionはハンドルされませんでした。」ふらふら



原因は、


64bitOSで、C#を「AnyCPU構成」でコンパイルすると、

64bitのコードが出来上がる、


でも、C++/CLIライブラリは32bitのライブラリだから呼べないというわけ。




VisualStudioC#のExpress版は、

デフォルトがAnyCPUだから、変更する必要がある。


やり方を画像で説明。


まず、構成マネジャーを表示させる準備。

※プロフェッショナル版は、構成マネジャーはデフォルトで確か見えてたかな?


C#(Express版)の「ツール」内の「オプション」をクリック。

option.png



で、「プロジェクトおよびソリューション」の「全般」の

「ビルド構成の詳細を表示」をチェック!(ここがむずいexclamation×2

check.png


メニューの「ビルド」内に「構成マネージャ」ができるのでクリック。

kman.png


「新規作成」する。

knew.png

プラットフォームを「x86」にする。

k86.png

これで、実行できる!



posted by ひでまる at 00:25| 京都 ☁| Comment(7) | VisualStudio | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は180日以上新しい記事の投稿がないブログに表示されております。