我首先使用了COM互操作,但是现在我切换到IJW(它只是工作),因为它更简单.我有一个包装器C++/CLR DLL(用/ clr编译).
一个简单的例子(使用静态来使调用更容易):
namespace MyClasses
{
public class MyClass
{
public static void DoSomething()
{
MessageBox.Show("Hello World");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在DLL中,我可以引用名称空间,如下所示:
using namespace MyClasses;
Run Code Online (Sandbox Code Playgroud)
并称之为:
__declspec(dllexport) void CallManagedCode()
{
MyClass::DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
现在你有一个非托管DLL导出"CallManagedCode",它调用托管代码.
当然,您还必须在托管/非托管边界之间转换数据.从VS2008开始,Microsoft包含一个marshal-helper,用于在非托管类型和托管类型之间进行转换.请参阅http://msdn.microsoft.com/en-us/library/bb384865.aspx
RE: 如何从非托管 C++ 应用程序调用托管 C# 代码?
从非托管 C++ 代码调用托管 .NET C# COM 对象...
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
将托管 C# DLL 包装在非托管 C++ 项目中: dll 。
http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html
归档时间: |
|
查看次数: |
23247 次 |
最近记录: |