私は本当にこの質問が以前に尋ねられたことはないと信じていませんが、私は本当に成功していない検索を試みました。C++からC++/CLIへの移植
私はC++/Win32プログラムをC++/CLIに移植していますが、もちろん、再テスト段階のスピードアップのために、コードに可能な修正の数を減らそうとしています。
私が原因ここでは、パラメータとして短い例をオブジェクトを持つグローバル関数にいくつかの問題を抱えています:
クラスのヘッダファイル
namespace MyNamespace {
public ref class MyClass {
public:
void test();
};
}
クラスのcppファイル
using MyNamespace;
void myFunction(MyClass ^obj);
void MyClass::test() {
myFunction(this);
}
ここに問題があります:私がMyNamspaceからmyFunctionを除外すると、 MyClassをパラメータの型として使用することはできません。 myFunctionをMyNamespaceに含めると、すべてのcppファイルが正しくコンパイルされますが、リンカーエラー "LNK2028未解決トークン"が表示されます。
アイデアは、新しいクラスを定義し、myFunctionをパブリック静的メソッドとして含めることですが、実際のプロジェクトでmyFunctionが単独ではないので、これは長い仕事になります。 MyNamespace
とmyFunction
ではないにMyClass
がある場合
どこかで 'myFunction'を定義(実装)していますか?それが解決されていない "トークン"(実際にはエラーメッセージだと思う)の場合(編集しないで*完全な*エラーメッセージを含めてください)。 –
"コマンドラインインターフェイス"タグが愚かである "C++/CLI"のCLIは "共通言語インフラストラクチャ"の略である – PeterT
あなたは間違っていると言ったコンパイラエラーメッセージを抑制するプロトタイプ宣言を書きました。しかし、あなたがそれを間違ってやってしまうのをやめさせていませんでしたが、リンカはあなたが実際にその機能を持っていないことを発見しました。C++/CLIには、ネイティブC++をマネージコードに直接変換するのではなく、*あなたのライブラリへの*パブリック*インターフェイス用のラッパークラスを書くだけです。すべての内部配管をそのままの状態にしておきます。これらのラッパーをカスタマイズして、管理対象タイプのシステムで使いやすくします。 http://stackoverflow.com/a/2691448/17034 –