私は現在、C++/CLIを使用して自分で作成したCで書かれたライブラリを利用するC#アプリケーションを作成しています。このライブラリはDLLにコンパイルされ、C++ラッパーの内部でC#プロジェクトで参照されます(長年わかっています)。別のコンパイラでコンパイルされたDLLを使用する
ここに問題があります。 MinGWを使ってCライブラリをDLLにコンパイルすると(GCCメイクファイルがライブラリに付属しています)、コードは正しく動作し、正しい出力が生成されます(これはコマンドラインでテストされています)。しかし、すべてのライブラリヘッダーとソースファイルをVisual StudioのCプロジェクトに組み込み、MSVCコンパイラを使用してコンパイルすると、ライブラリコードの内部にはRead Access Violation
が含まれています。
は、今私は(そしておそらく必要があります)問題が正確に何を見つけるためにライブラリをデバッグすることができ、それは私が持つ多くの経験を持っていない、かなり低レベルのCで書かれています。私の質問は、ライブラリをMinGWを使ってDLLにコンパイルして、そのDLLをMSVCでコンパイルされたプロジェクトで参照すると問題が解決するのでしょうか?
ではありません[プラットフォーム呼び出し](https://msdn.microsoft.com/en-us/library/aa288468(V = vs.71).aspxの)この場合は、より良いですか? –
試してみてください。 –
@VisualVincent私はPInvokeを使用しようとしましたが、私の人生のために働くことはできませんでした。だから私はCコードのためのクイックC + +ラッパーを書いて、C + +/CLIはすぐに働いた。 –