c# - 如何在 Visual C++ 中将托管变量用作全局变量?

标签 c# c++ visual-c++ clr managed-code

我正在用 Visual C++ 编写 MFC 应用程序并使用一个 C# 库。 Dou to I 结合非托管和托管类和变量。我需要一些来自 C# 的托管类在全局范围内放置和读取,以便可以从整个应用程序访问。我试过了(简单的例子):

App.h:
    class MyClass1 {
        public:
            gcroot<Namespace::Something^> var;
        };

    class MyClass2 {
        public:
            static gcroot<Namespace::Something^> var;
        };

    extern MyClass1 *cl1;

App.cpp
    MyClass1 *cl1 = new MyClass1();

当我使用“cl1->var”时,我得到 System.NullReferenceException,MyClass2 返回错误

error LNK2020: unresolved token (0A0003BE) "public: static struct gcroot ...
error LNK2001: unresolved external symbol "public: static struct gcroot ...

请帮助我,如何在整个应用程序中使用“Something^ var”?

最佳答案

与任何其他 C++ 静态成员一样,除了声明它之外,您还需要定义它。因此,在命名空间范围内的 App.cpp 中,您需要:

gcroot<Namespace::Something^> MyClass2::var;

关于c# - 如何在 Visual C++ 中将托管变量用作全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23941645/

相关文章:

c# - SetFileTime 返回错误代码 5

c++ - typedef decltype 函数指针未返回正确的输出(cout)

C++ 不允许带有负索引的 vector ?

visual-c++ - 如何将 IWinHttpRequest 导入 MSVC++ 项目?

visual-c++ - OnTimer 仅重复第一个函数调用

c# - Point 双坐标的最佳实践

c# - Razor 页面 : Set cookie from _Layout. cshtml

c# - MVC core MSI builder,如何创建安装程序?

C#:委托(delegate),紧凑访问者, "universal callable"参数类型

c++ - 解析文件路径的最佳方法是什么?