1

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.

Community
  • 1
  • 1
E-rich
  • 9,243
  • 11
  • 48
  • 79

1 Answers1

2

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.

Mark Lakata
  • 19,989
  • 5
  • 106
  • 123
  • I did not realize the children listed under References in Visual Studio were only managed code. Thanks! – E-rich Sep 03 '13 at 19:27