2009-08-25 52 views
0

我試圖將c#轉換爲C++與反射。該代碼編譯,反彙編和重構代碼生成此錯誤:c + +公共函數語法錯誤

1>c:\users\user\documents\visual studio 2008\projects\reflect_readoo\reflect_readoo\readoo.cpp(2) : error C2059: syntax error : 'public'

1>c:\users\user\documents\visual studio 2008\projects\reflect_readoo\reflect_readoo\readoo.cpp(2) : error C2143: syntax error : missing ';' before '{'

1>c:\users\user\documents\visual studio 2008\projects\reflect_readoo\reflect_readoo\readoo.cpp(2) : error C2447: '{' : missing function header (old-style formal list?)

由於我不熟悉C++的語法我不是100%確定從哪裏開始與這些錯誤。我嘗試的第一件事是刪除所有複雜的代碼,並讓整個事件(它是名稱空間中的一個類)只是一個「測試」。在命名空間和類中。刪除了「ref」關鍵字,該關鍵字刪除了最高的錯誤(這導致了所有功能的百萬個新錯誤),但後來被告知如果使用clr標誌編譯,只能使用一個命名空間,這會有點失敗點我想要做的事情。

任何人都可以推薦一個測試的路徑,我可以低頭開始?否則,任何人都可以推薦一個更好的方法來將windows.form c#程序轉換爲非託管C++程序?我應該自己做嗎? (無論如何,我最終都要這樣做,但只要有該死的東西,並能夠查看並快速查看差異,我就需要自己的程序)。

非常感謝您的幫助,建議或指導。

我明白了演示文稿方面的困難,實際上我並沒有期待這樣做,我只是想出一個夢幻般的希望。但是,我想翻譯最初是控制檯應用程序的應用程序的「後端」。我簡單地將其作爲類文件添加到我的Windows窗體設計中。這只是約1000行的這一類。

片段:

public ref class RProgram { 
    public: 
     static System::String ^KeywordsLog = "Keywords.log"; // WHERE THE PROGRAM KEEPS ITS LOG 

// classes. . . functions. . . the errors are reported on the first lines 

}; 

爲後來我明白了,承認我想接着是不可能的,但可能會有人這麼好心請幫我解決防止其編譯爲託管C錯誤++?

+0

你能列出生成的C++的片段嗎?這聽起來很容易。 – 2009-08-25 01:18:04

回答

4

你將有一個非常困難的時期翻譯任何合理的複雜Windows窗體從C#到非託管 C++應用。

您將無法訪問任何.NET框架庫,這意味着沒有Windows窗體。您需要爲窗口選擇不同的API,例如MFC。

一般而言,這意味着您需要完全重新構建您的應用程序 - 至少在其演示文稿方面。我一般的經驗法則是不要去做這件事 - 你有一個工作的應用程序,只是保留它。

+0

+1 Yep,看起來像您的工具被設計爲轉換爲C++/CLI,而不是非託管C++。 – 2009-08-25 02:01:16