0

SDK に付属のロボット ソフトウェアを使用しており、独自のコードを記述してビルドし、生成された「dll」および「kab」ファイルをソフトウェアの bin ディレクトリに追加できます。そうすることで、独自のアルゴリズムと新しい機能をソフトウェア (または覚えていない別の SDK) に追加することができます。

SDK、Windows SDK、およびCmakeを使用していますが、問題はドキュメントにあり、Microsoft Visual C++ 2005のみを使用でき、他には何も使用できないと書かれています! Microsoft Visual Studio 2008 で試してみましたが失敗しました。

どうにかして msvc8 だけを使用しなければならない可能性はありますか? msvc8 の特定のコンパイラが原因でしょうか? もしそうなら、Netbeansでそれらのコンパイラを使用できる方法はありますか(このmsvc8は非常に残念です:/)

4

1 に答える 1

0

2つの可能性があります -

Visual c++ 2005 と 2008 では、ランタイム ライブラリが異なります。パラメーターとして単純な型を持つ関数を呼び出す場合は問題ありませんが、より複雑な型を渡す場合、それらの型の定義はバージョン間で変更されている可能性があります。たとえば、関数がパラメーターとして std::string を取る場合、あるバージョンのクラスを使用して作成しますが、別のバージョンのクラスを使用してコンパイルされたコードで使用しようとすると、何らかの点で異なる場合に失敗します。重要です。それが std::string に影響するかどうかはわかりませんが、使用しているものに影響する可能性があります。

もう 1 つはメモリ割り当てです。どちらの部分も異なるランタイム ライブラリでコンパイルされるため、一方に割り当てられたメモリは他方にはわかりません。dll に新しいメモリを追加し、メイン プログラムがそのメモリを解放しようとすると、そのメモリを認識できずに失敗します。これは、新しい自分で割り当てるメモリだけに適用されるのではなく、メモリ自体を割り当てた任意のクラスに適用できます。

別のバージョンのコンパイラを使用してアドオン dll を作成することは可能ですが、機能する型のみを使用し、メモリ割り当てを適切に編成するように十分注意する必要があります。これが可能かどうかは、必要なインターフェースが何であるかによって異なります

編集:あなたの他の質問に答えるために、Windowsコンパイラにはすべて「cl」と呼ばれるコンパイラコマンドラインが付属しています.netbeansから呼び出すことができると確信しています.

于 2012-06-02T10:38:48.640 に答える