Importing a DLL in C#

44,360

Solution 1

You've probably also got the wrong return type in your statement. Try with bool:

[DllImport("kernel32")]
private static extern bool WritePrivateProfileString(string section, string key,string val,string filePath);

References: http://msdn.microsoft.com/en-us/library/ms725501(v=vs.85).aspx

EDIT:

DllImports have to be placed inside the body of your class. Not inside methods or the constructor.

public class Class1
{
     //DllImport goes here:
     [DllImport("kernel32")]
     private static extern ...

     public Class1()
     {
          ...
     }

     /* snip */
}

Solution 2

In your solution explorer, right-click references, select Add Reference, and add the System.Runtime.InteropServices to your project.

You can't do using <assembly>; if it's not also referenced in your project.

EDIT

Actually, just saw your comment on your question. I think (haven't done Interop in a while) that it has to be outside a function, in the body of the class.

i.e.:

public class MyClass
{

    [DLLImport("kernel32")]
    private static extern long WritePrivateProfileString(string sectio, string key, string val, string filePath);

    public MyClass()
    {
    }

    public void foo()
    {
    }

    // etc, etc
}
Share:
44,360

Related videos on Youtube

sohil
Author by

sohil

Updated on July 20, 2020

Comments

  • sohil
    sohil over 3 years

    I'm trying to import a dll to my C# project using DllImport as follows:

    [DllImport("kernel32")]
    private static extern long WritePrivateProfileString(string section, string key,string val,string filePath);
    

    Also, I have added the namespace System.Runtime.InteropServices:

    using System.Runtime.InteropServices;
    

    Still, I'm getting an error: "The name 'DllImport' does not exist in the current context"

    Is there a limitation on where in a class you can import a dll?

  • sohil
    sohil over 12 years
    Still not working. Its not recognizing DllImport at all. The parameters would come after it recognizes it i guess.
  • sohil
    sohil over 12 years
    Changed that. Still not working. Its not recognizing DllImport at all. The function line would be executed after it recognizes it i guess.
  • sohil
    sohil over 12 years
    I'm doing using <namespace>; The assembly need for this is mscorlib.dll which AFAIK, is referenced automatically.