And*_*i S 5 c c# dll unmanaged dllimport
我有一个dll,用mingw构建其中
一个头文件包含:
extern "C" {
int get_mac_address(char * mac); //the function returns a mac address in the char * mac
}
Run Code Online (Sandbox Code Playgroud)
我在另一个使用Visual C++(2008SP1)构建的c ++应用程序中使用此dll,不是托管的,而是普通的c ++(只需包含标题,并调用函数)
但现在我必须在C#应用程序中使用它
问题是我无法弄清楚究竟是什么(我是.net编程的新手)
这就是我尝试过的
public class Hwdinfo {
[DllImport("mydll.dll")]
public static extern void get_mac_address(string s);
}
Run Code Online (Sandbox Code Playgroud)
当我调用该函数时,没有任何反应
(mydll.dll文件位于c#app的bin文件夹中,它不会给我任何错误或警告)
LBu*_*kin 10
我认为您需要将extern定义为:
public class Hwdinfo {
[DllImport("mydll.dll")]
public static extern int get_mac_address(out string s);
}
Run Code Online (Sandbox Code Playgroud)
您应该匹配函数(int
)上的返回参数类型,并将字符串参数标记为out参数,以便生成C#代码以期望从被调用函数接收值,而不是只传入一个.
请记住,C#中的字符串被视为不可变,此行为也会扩展到外部调用.
要将字符串输出参数与 DllImport 一起使用,类型应为 StringBuilder。
public class Hwdinfo {
[DllImport("mydll.dll")]
public static extern int get_mac_address(StringBuilder s);
}
Run Code Online (Sandbox Code Playgroud)
这是一篇关于使用 Win32 dll 和 C# 的 MSDN 文章:
http://msdn.microsoft.com/en-us/magazine/cc164123.aspx
归档时间: |
|
查看次数: |
909 次 |
最近记录: |