如何在C#中调用C++ 动态库?

2024-11-29 10:34:30
推荐回答(5个)
回答1:

1.如果你调用的dll是系统的system32中的dll,如 user32.dll中的线程之前通讯的函数,直接在你的C#内中执行下面的语句进行一个外部声明,那么就可以直接当作成员函数使用了
[DllImport("user32.dll", EntryPoint = "SendMessage")]
public static extern int SendMessage(int hwnd, int wMsg, int wParam, ref struct lParam);

2.如果调用的DLL是自己用C++写的,那么先将DLL文件复制到你的C#项目的编译目录下,一般是Debug目录,然后再做一个同上面第一种情况一样的工作,进行外部声明,然后就可以在程序中直接调用了。

回答2:

C#里直接调用C++的DLL是不可能的...
C#用的是.NET框架的,所以不能直接用C++的库
如果你要用,你有那个DLL或者LIB的源码没?有的话,用CLR封装一层,然后用CLR生成DLL,这样在C#中就可以调用了.
加你QQ了,有问题可以找我.

回答3:

部署dll流程:

首先把dll文件放到应用程序...\bin\Debug\下;
然后在解决方案中添加引用:右键鼠标-->添加引用-->浏览-->选择dll放置路径后点击“确定”。
注意:要在应用文件头处使用using md5;命令。

测试应用程序代码,如下:Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using md5;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string str1 = textBox1.Text.ToString();
string md5String = textBox2.Text.ToString();

textBox3.Text = md5.Program.GetMd5Str32(str1);
textBox4.Text = md5.Program.CheckMd5String(str1, md5String).ToString();

}

private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

回答4:

我不懂C#,但是我想我说这个方法应该是可以的:C#总能够调用系统提供的api函数吧,那么你可以调Loadlibrary()函数加载动态库到你的进程空间,然后用GetProcAddress()函数获取你想调用的函数的地址,有了这个地址,自然就能调用这个函数了。

回答5:

DLLImport("文件名")
{ static extern ‘dll中的函数名’ }
即可,(别忘了把dll 放到工程目录下)

Dllimport("LQ2000.dll")
{static extern int startServiceTCP(unsigned shout uport);}

调用时就当在c++中吧!