Importing a DLL in C#

我只是一个虾纸丫 提交于 2019-12-07 07:57:19

问题


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?


回答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 */
}



回答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
}



回答3:


Try Adding these parameters

[DllImport("kernel32",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]



回答4:


usually when importing win dll you use unsafe code sow be sure to check the project settings here are two simple tutorial that shows the code

code for Kenler32.dll inport

MSDN whit explanation



来源:https://stackoverflow.com/questions/6758184/importing-a-dll-in-c-sharp

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!