新しいこと、枯れたこと問わずサムザップ大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。C++C++でDLLファイルを作り、それをC#から関数を呼び、C++側に文字列を渡すということをやります。v15.9.8今回作るものC++製のTestDll.dllというDLLファイルを作成し引数が文字列のTestメソッドを用意します。C#側から文字列を引き渡してログを出力し、C++とC#間の文字列を引き渡すテストを行います。ダイナミックリンクライブラリ(DLL)を選びます。プロジェクトを作るとデフォルトでファイルがいくつか作られます。C#側に公開する関数のアトリビュートの定義gist.github.comプロジェクト作成時に自動的に作られる、stdafx.hにDLLをExportするためのDllExportというマクロを定義しています。"C"をつけるのか?これは、C++コンパイル時にメソッド名が変わってしまうのを防ぎ、リンクエラーが起こさせないためです。小粋空間の記事がとても参考になりました。ありがとうございました。C++側のコードgist.github.comC++側にC#から呼んでほしい関数を定義し、先程定義したDllExportマクロをくっつけます。DLL作成C++側の準備が終わったので、プロジェクトを右クリックしてビルドをクリックしてTestDll.dllを作成します。このDLLをC#プロジェクトのexeと同階層に配置します。externをくっつけます。CallingConvention.Cdecl)]アトリビュートも必須です。C#を実行すると、hogehogeと出力され、思った通りの挙動になります。文字列の場合は、C++側はchar型のポインタで受け取ることで、C#stringを渡すことができます。19:36C#からC++(DLL)に文字列を渡すTweet読者になるボタンを押して貰えるととてもがんばれます。大庭俊介(bao_bao)渋谷のUnityエンジニア。スマホゲーム作って生活しています。設計、組み込み、演出一通りを自分1人で完結して作るのが得意です。よろしければTwitterフォローお願いします。(@ohbashunsuke)株式会社サムザップでUnityエンジニアとしてスマホゲーム作っています。(1)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。