Reputation: 190659
I have the following C# code that uses DLLImport.
using System;
namespace LvFpga {
class RegTest
{
[DllImport("kernel32")]
public extern static int LoadLibrary(string lpLibFileName);
[DllImport("kernel32")]
public extern static bool FreeLibrary(int hLibModule);
public static bool IsDllRegistered(string DllName)
{
int libId = LoadLibrary(DllName);
if (libId>0) FreeLibrary(libId);
return (libId>0);
}
public static void Main(string[] args)
{
Console.WriteLn(IsDllRegistered("msdia100.dll"));
}
}
}
When I simply run csc CSCODE.cs
I got the errors.
regtest.cs(7,6): error CS0246: The type or namespace name 'DllImport' could not be found (are you
missing a using directive or an assembly reference?)
regtest.cs(7,6): error CS0246: The type or namespace name 'DllImportAttribute' could not be found
(are you missing a using directive or an assembly reference?)
regtest.cs(9,6): error CS0246: The type or namespace name 'DllImport' could not be found (are you
missing a using directive or an assembly reference?)
regtest.cs(9,6): error CS0246: The type or namespace name 'DllImportAttribute' could not be found
(are you missing a using directive or an assembly reference?)
What's wrong? What might be added in options?
Upvotes: 2
Views: 4128
Reputation: 7460
You have to have
using System.Runtime.InteropServices;
Moreover, there is no function "Console.WriteLn". You need
Console.WriteLine(IsDllRegistered("msdia100.dll"));
Upvotes: 7
Reputation: 941218
Put this at the top of the file:
using System.Runtime.InteropServices;
Your declarations are wrong, this won't work on a 64-bit operating system. Get the right ones from the pinvoke.net website. Also add error checking, SetLastError property.
Upvotes: 3
Reputation: 12064
You are missing a using System.Runtime.InteropServices;
at the beginning of the code.
Upvotes: 3