如何从 C# 中的 C++/CLI dll 访问类型?
How do I access a type from a C++/CLI dll in C#?
我使用以下代码创建了一个 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
时,我得到一个未定义的标识符错误:
The type or namespace name 'my_msg_t' could not be found (are you
missing a using directive or an assembly reference?)
为什么这个类型不可见?我需要做任何类型的 "type export" 吗?有什么解决方法吗?
C# 看不到 typedef 的原因有两个:
C# 只能看到 C++/CLI 库中的托管类型。没有允许 C# 直接访问非托管类型的机制。
C++/CLI 库中的 'typedef' 语句对另一个 .NET 应用程序永远不可用。它仅在范围内的 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
时,我得到一个未定义的标识符错误:
The type or namespace name 'my_msg_t' could not be found (are you missing a using directive or an assembly reference?)
为什么这个类型不可见?我需要做任何类型的 "type export" 吗?有什么解决方法吗?
C# 看不到 typedef 的原因有两个:
C# 只能看到 C++/CLI 库中的托管类型。没有允许 C# 直接访问非托管类型的机制。
C++/CLI 库中的 'typedef' 语句对另一个 .NET 应用程序永远不可用。它仅在范围内的 C++/CLI 库中可用。