load C# dll in c++/cli and create a dll that works in unmanaged language

Viewed 57

I have written a selenium script in C# and now I want to expose all functions and use them all in c++ code. My point is to deliver a dll to sb who wants to use this dll in pascal (delphi). The C# code is a complete code and all I want to do is to make a bridge between my C# and pascal. I found out that pascal is an unmanaged language so C# code, which is a managed one, can not be consumed in pascal. For that reason, I started to write a c++ dll that uses my C# dll and makes a bridge between my C# and pascal code. I've read all available topics on stackoverflow and these are what I've found useful:

  1. expose my functions using COM
  2. using c++/cli to communicate with my C# dll.

I started with the first one. I was able to create COM visible dll and use that in my c++ native code but I had problems with data types. I found it hard and moved on to the second option. But I'm not sure if I can wrap all my functions like that and let unmanaged languages use them. a sample of my c# code:

namespace MainEngine
{
public static class StartMainEngine
{
        public static void test_pascal(out string _result)
        {
            _result = "Hello World!";
        }
}
}

my c++/cli code(I have referenced to my dll and visual studio shows me all functions inside my dll. So, It's not a dll import issue):

#using<ManagedLibrary.dll>
using namespace MainEngine;
char* r;
StartMainEngine::test_pascal(r);

Please guide me through this and let me know if I'm doing this in the correct way to be able to consume this dll in pascal.

1 Answers

It's possible using COM, CLR or IPC

Full answer you can find in this topic here

Related