如何从C#中的C ++ / CLI dll访问类型?

时间:2015-09-23 02:53:22

标签: c# .net visual-c++ dll c++-cli

我使用以下代码创建了一个C ++ / CLI dll:

#pragma once

#include "msg.h" //msg_t is a struct defined here

using namespace System;

namespace myCLRDll 
{

    typedef msg_t my_msg_t;

    public ref class Class1
    {
    };
}

构建库,添加对我的C#应用​​程序和using myCLRDll;指令的引用,但当我去使用my_msg_t时,我得到一个未定义的标识符错误:

  

无法找到类型或命名空间名称'my_msg_t'(是吗?   缺少using指令或程序集引用?)

为什么这种类型不可见?我需要做任何类型的“类型导出”吗?有什么解决方法吗?

1 个答案:

答案 0 :(得分:4)

C#没有看到typedef有两个原因:

  1. C#只能查看C ++ / CLI库中的托管类型。没有机制允许C#直接访问非托管类型。

  2. C ++ / CLI库中的'typedef'语句永远不可用于其他.NET应用程序。它仅在C ++ / CLI库中可用,它位于范围内。