我有一个dll里的类: 例如:
namespace foo {
public class baa {
/* ... */
}
}
我该如何从dll中导入
baa
类?这是可行的吗?[DllImport(DllName)]
public extern ?? foo() ??
谢谢您的提前帮助。
我有一个dll里的类: 例如:
namespace foo {
public class baa {
/* ... */
}
}
baa
类?这是可行的吗?[DllImport(DllName)]
public extern ?? foo() ??
谢谢您的提前帮助。
这样行不通。未经管理的DLL导出的是C接口,而不是C++接口。对于托管的DLL(C#或C++/CLI),您根本不需要DllImport。
只有导入到静态类中的函数可以使用。
DllImport
仅用于从非托管库(如用 C++ 编写的库)调用非托管函数。
当您拥有托管的 .NET 程序集时,只需将其添加为项目引用并使用即可。
假设您有一个包含以下类的 .NET 类库:
namespace foo {
public class baa {
/* ... */
}
}
然后,如果您有其他项目需要使用此程序集,可以转到“解决方案资源管理器”中的“引用”节点并将给定程序集添加为引用。然后将命名空间引入作用域:
using foo;
并实例化该类:
baa b = new baa();
... use the b instance here
这是一个标准的 C++ 导出机制,只适用于 C++。你不能直接从 C# 中导入它。有一些解决方法,比如从 MC++ 程序集中导出托管类型、使用单独的托管包装器、使用 COM 和类型库等,但你不能使用 C++ 应用程序使用的相同的导入/导出机制。
declspec(dllexport)
,而且declspec
不是标准的。 - Ben Voigt