您的位置:首页 > 编程语言 > C语言/C++

C#调用C++ DLL的方法

2015-12-09 18:59 375 查看
由于C#直接访问USB设备的能力较弱,而C++在这方面则强大许多。因此,考虑通过C++实现读写USB设备,C#调用该DLL接口的方式。这个过程中,上网查了一些资料,但是自己动手,仍然会出现这样或者那样的问题,因此,记录下大体步骤,以便后续他人或者自己可以参考。

主要步骤如下:

1 C++ dll声明导出函数,代码如下:

/**

* disconnect printer

*

*/

extern "C" __declspec(dllexport) void __stdcall disconnectPrinter();

2 C# 增加调用声明,类似如下:

namespace WindowsFormsApplication_Call_SDK

{

public class SDK_DLL_API

{

[DllImport("80SDK.dll", EntryPoint = "disconnectPrinter")]

public static extern void disconnectPrinter();

}

static class Program

{

/// <summary>

/// 应用程序的主入口点。

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

}

}

3 如果报DllImport找不到的类似错误,增加using System.Runtime.InteropServices;即可解决该问题。

4 调用测试,代码如下:

private void button1_Click(object sender, EventArgs e)

{

SDK_DLL_API.disconnectPrinter();

}

5 运行测试,如果在64位的机器下编译调试C#程序,报 C#调用dll提示"试图加载格式不正确的程序"的错误,解决方法如下:

点击项目属性,生成 属性页,把目标平台Any CPU 设置为x86即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: