E-rich
E-rich

Reputation: 9521

Adding MinGW compiled DLL to Visual Studio fails

I have written a library in C that I want to be able to be used in C#, C++, and Python (other languages would be nice, but not necessary for now). The library was developed in Linux and I have been able to compile it on Windows via MinGW. The problem I am having is when trying to add the .dll as a reference in a Visual Studio 2010 solution. The error I get is:

A reference to 'C:\path\to\libmylibrary.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.

I have spent some time trying to see if I am compiling the DLL incorrectly, but don't see anything glaring out at me. Some references I've used are this, this, and this.

If more information is needed I can provide some compilable example source code.

Upvotes: 1

Views: 548

Answers (1)

Mark Lakata
Mark Lakata

Reputation: 20904

There are 2 ways to add a "DLL" to a C# project.

If the DLL is a CLR Assembly, meaning it is managed code that adheres to the CLR, then you can add it as a "reference".

If the DLL is NOT a CLR Assembly, you can load the code manually using the P/Invoke structure. There's a lot of online documentation on P/Invoke. It is messy, but it works. You need to declare each DLL entry function using the [DllImport] attribute, and load the DLL manually. Search SO for p/invoke.

Based on your error message, you are trying to load a plain DLL as an CLR DLL. That means you'll have to figure out how to use P/Invoke.

Upvotes: 2

Related Questions