2016-10-27 7 views
-1

私は現在、C++/CLIを使用して自分で作成したCで書かれたライブラリを利用するC#アプリケーションを作成しています。このライブラリはDLLにコンパイルされ、C++ラッパーの内部でC#プロジェクトで参照されます(長年わかっています)。別のコンパイラでコンパイルされたDLLを使用する

ここに問題があります。 MinGWを使ってCライブラリをDLLにコンパイルすると(GCCメイクファイルがライブラリに付属しています)、コードは正しく動作し、正しい出力が生成されます(これはコマンドラインでテストされています)。しかし、すべてのライブラリヘッダーとソースファイルをVisual StudioのCプロジェクトに組み込み、MSVCコンパイラを使用してコンパイルすると、ライブラリコードの内部にはRead Access Violationが含まれています。

は、今私は(そしておそらく必要があります)問題が正確に何を見つけるためにライブラリをデバッグすることができ、それは私が持つ多くの経験を持っていない、かなり低レベルのCで書かれています。私の質問は、ライブラリをMinGWを使ってDLLにコンパイルして、そのDLLをMSVCでコンパイルされたプロジェクトで参照すると問題が解決するのでしょうか?

+0

ではありません[プラットフォーム呼び出し](https://msdn.microsoft.com/en-us/library/aa288468(V = vs.71).aspxの)この場合は、より良いですか? –

+0

試してみてください。 –

+0

@VisualVincent私はPInvokeを使用しようとしましたが、私の人生のために働くことはできませんでした。だから私はCコードのためのクイックC + +ラッパーを書いて、C + +/CLIはすぐに働いた。 –

答えて

1

あなたのように聞こえます。これは、専門家の開発者になる機会です。ショートカットはありません。 Visual Studioでコードをステップ実行し、理解できないコードを取得したら調査します。具体的なことを理解しようと2時間以上過ごしている場合は、休憩をとり、調査を開始してください(別の検索語を試してみてください)。可能な限り、続行して、あなた自身が立ち往生しないようにしてください。 C言語は特に透過的です - 魔法はありません。あなたはそれを行うことができます。あなたは喜んだでしょう。特にCを理解する努力が必要です。何でも。あなたがコードで行うことができるものは、C言語で行うことができます。 Cはコンピュータ言語のロゼッタ石です。始めてください。それがどうなるか教えてください。

関連する問題