简体   繁体   中英

calling managed c# functions from unmanaged c++

如何从非托管C ++调用托管C#函数

Or use a project of mine that allows C# to create unmanaged exports. Those can be consumed as if they were written in a native language.

I used COM interop first, but by now I switched to IJW (it just works), as it is a lot simpler. I have a wrapper C++/CLR DLL (compile with /clr).

A simple example (using statics to make the calls easier):

namespace MyClasses       
{
    public class MyClass
    {
        public static void DoSomething()
        {
            MessageBox.Show("Hello World");
        }
    }
}

In the DLL I can reference namespaces as follows:

using namespace MyClasses;

And call it:

__declspec(dllexport) void CallManagedCode()
{
    MyClass::DoSomething();
}

Now you have an unmanaged DLL export "CallManagedCode" which calls into the managed code.

Of course, you also have to convert data between the managed/unmanaged boundary. Starting with VS2008, Microsoft includes a marshal-helper for converting between unmanaged and managed types. See http://msdn.microsoft.com/en-us/library/bb384865.aspx

我使用了这里描述的 C ++ / CLI包装器类,它相对容易实现。

RE: How to call managed C# code from an unmanaged C++ application?

http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.interop/2005-05/msg00030.html

Calling Managed .NET C# COM Objects from Unmanaged C++ Code ...

http://www.codeproject.com/KB/cs/ManagedCOM.aspx

Wrapping a managed C# DLL in a unmanaged C++ project : dll .

http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM