Thanks to additional explanation of the problem by James, another problem is missing "Cards.DLL".
James, first of all, you never gave us a piece of code where "Cards.DLL" is attempted to load. It's very easy to make a mistake in it.
As far as I can see, "Cards.dll" is a native library, not .NET assembly.
As your Question has a tag "C#", you want to use this library in your assembly.
It can be loaded and accessed via
You need to know entry points of every function you want to export from "Cards.DLL", exact name (non-mangled, as it appears in DLL dump) complete profile of each one (translated into C#). You also need to have a correct path to the DLL, relative to your starting assembly location (or absolute).
If you have all that, you need to apply the attribute
]) to each function to be imported.
As the function may contain parameter or return types different from .NET types, each such parameter may need application of the attribute
In some cases, default marshalling works (such as marshalling between
and null-terminated strings, either Unicode or ANSI), so such parameters require no attribute. In other cases,
is needed (see its constructor
]) and the type
In more complex cases, creation of custom Marshalling may be required.
For further advice, exact profiles of the functions is needed. It can be very easy to export them (more typical case), very difficult (not very typical case) or somewhere in between (fairly typical case).
My first advice about the use of Dispose is unrelated to the problem of "Cards.DLL", but still valid -- you should change the schema of disposal. That's why I'm posting a second answer.