Please see my comment to Solution 1.
The idea itself is good, but the false claim (I explain) spoils everything. At the same time, you can create a C# class library and modify it (with outside tool you can build) to export some managed method to unmanaged. This is tricky but can work for you, too.
I found some articles in CodeProject myself, and tried it out. Please see my past reference and find those articles:
How can I use a dll created in Visual Basic 2008 in Visual Basic 6.0[
^],
Call Managed DLL written in C# from Unmanged Code VC++[
^],
API's in .Net: Managed or UnManaged Code[
^].
[EDIT]
After I criticized Solution 1, let me explain what is the rational part of it. The idea is simple: instead of writing your DLL code for LabVIEW (I'm really sorry if you have to :-)) in C, but make it mixed-mode (managed+unmanaged) C++/CLI DLL. You can export unmanaged part and wrap you C# calls in it. As this is also a regular .NET assembly, you can use the assembly written in C# by normal referencing it.
Most likely, this approach would be the easiest for you. This is not counting Solution 3, which might be the very best, but I never tried it.
—SA