我使用以下代码创建了一个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指令或程序集引用?)
为什么这种类型不可见?我需要做任何类型的“类型导出”吗?有什么解决方法吗?
答案 0 :(得分:4)
C#没有看到typedef有两个原因:
C#只能查看C ++ / CLI库中的托管类型。没有机制允许C#直接访问非托管类型。
C ++ / CLI库中的'typedef'语句永远不可用于其他.NET应用程序。它仅在C ++ / CLI库中可用,它位于范围内。