我真的不相信這個問題以前從未問過,但我真的試圖搜索沒有成功,如果你有一個已經回答了類似問題的鏈接,請分享。從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作爲參數的類型。如果我在MyNamespace中包含myFunction,則每個cpp文件都將正確編譯,但是我會得到一個鏈接器錯誤「LNK2028未解析的令牌」。
一個想法是定義一個新類,並將myFunction作爲一個公共靜態方法,但要做到這一點將是一項長期工作,因爲myFunction在真實項目中並不孤單......任何其他想法?
你確定(實現)'myFunction'某處?如果這是「令牌」(符號,我認爲錯誤消息實際上是)未解決(請包括*完整*錯誤消息,無需編輯)。 –
「命令行界面」標籤是愚蠢的CLI在「C++/CLI」代表「公共語言基礎設施」 – PeterT
嗯,你只是寫了原型聲明來抑制編譯器錯誤消息,告訴你,你做錯了。然而,沒有阻止你做錯了,現在鏈接器發現你實際上並沒有這個功能。對於C++/CLI來說非常重要的是你不**直接將本地C++翻譯爲託管代碼,而只是將* public *接口的包裝類寫入到庫中。保留所有內部管道。並定製這些包裝,以便它們易於與託管型系統一起使用。 http://stackoverflow.com/a/2691448/17034。 –