0

我正在尝试使用反射器将 ac# 转换为 c++。编译、反汇编和重构的代码正在生成此错误:

1>c:\users\user\documents\visual studio 2008\projects\reflect_readoo\reflect_readoo\readoo.cpp(2):错误 C2059:语法错误:'public'

1>c:\users\user\documents\visual studio 2008\projects\reflect_readoo\reflect_readoo\readoo.cpp(2):错误 C2143:语法错误:缺少“;” 前 '{'

1>c:\users\user\documents\visual studio 2008\projects\reflect_readoo\reflect_readoo\readoo.cpp(2) : 错误 C2447: '{' : 缺少函数头(旧式正式列表?)

由于我不熟悉 C++ 语法,我不能 100% 确定从哪里开始处理这些错误。我尝试的第一件事是删除所有复杂的代码,让整个事情(它是命名空间中的一个类)只是一个 cout << "test"; 在命名空间和类中。删除了“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++ 的错误吗?

4

1 回答 1

4

您将很难将任何合理的复杂Windows 窗体应用程序从 C# 转换为非托管C++。

您将无权访问任何 .NET 框架库,这意味着没有 Windows 窗体。您需要为窗口选择不同的 API,例如 MFC。

一般来说,这意味着您需要完全重新构建您的应用程序 - 至少是它的演示方面。我通常的经验法则是不要打扰这样做 - 你有一个工作应用程序,只需保留它。

于 2009-08-25T01:16:51.353 回答