我在dll中有一个课程: 例如:
namespace foo {
public class baa {
/* ... */
}
}
如何从dll导入baa
类?有可能吗?
[DllImport(DllName)]
public extern ?? foo() ??
提前致谢。
答案 0 :(得分:7)
那不行。非托管DLL导出C
接口,而不是C++
接口。对于托管DLL(C#或C ++ / CLI),您根本不需要DllImport。
我只害怕导入静态类的函数。
答案 1 :(得分:2)
DllImport
仅在您想要从非托管库调用非托管函数时使用(例如用C ++编写的函数)。
当您拥有托管的.NET程序集时,只需将其添加为项目的引用并使用它。
假设你有一个包含以下类的.NET类库:
namespace foo {
public class baa {
/* ... */
}
}
然后你有一些其他项目需要使用这个程序集,你可以转到解决方案资源管理器中的References节点和给定程序集的Add Reference。然后将命名空间放入范围:
using foo;
并实例化该类:
baa b = new baa();
... use the b instance here
答案 2 :(得分:0)
这是一种仅适用于C ++的标准C ++导出机制。您无法直接从C#导入它。有一些解决方法,比如从MC ++程序集导出托管类型,使用单独的托管包装器,使用COM和类型库或类似的东西,但不能使用C ++应用程序使用的相同导入/导出机制。