用的来IDE不一样,生成DLL文件源的方法也有差异,建议上网查找你所用的IDE生成DLL文件的方法。
***********************************************
这个关键是IDE(比如是VC++还是BCB),C语言在编DLL和其它的程序时都用相同的规则。
***********************************************
看不懂建议暂时就不要自己做了,在这里说和你看网上资料是一样的,而且这里可以说的内容还不及网上多呢。
❷ C语言调用C++写的DLL
1为了使c能调用c++写的dll。c++中使用extern "C"{ }修饰该接口即可
这个原因你应该知道吧大概意思是告诉专c++编译器这段代码属用c编译器编译
编译之后的结果是c方式的而不是c++方式的。
2但是c中不识别extern "C"。
综上两点,在dll头文件中常这样写,如下:
意思就是编译的时候编译成c方式。但是包含头文件时,因为是c调用所以会忽略掉extern "C"
#ifdef __cplusplus
extern "C"
{
#endif
。。。。。。。。。。。。
#ifdef __cplusplus
}
#endif
这个你也明白吧。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
❸ 如何用C#调用C编写的dll
使用C#生成dll文件并调用
一、创建dll文件:
例如生成一个md5编码判断状态的文件,即,输入一个字符串(string A)和一个32位md5编码(string B),判断此字符串A对应的32位md5编码是否与B相等,如果槐郑相等返回true,否则返回false。
打开VS 2005,“文件”--》“新建”--“项目”,选择“Windows 控件库”,命名后点击“确定”,在“UserControl1.cs”中输入以下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Text;
using System.Security.Cryptography;
namespace md5
{
public partial class Program : UserControl
{
#region MD5 32位加密:GetMd5Str32
/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="strSource">待加密字串</param>
/// <returns>加密后的字串</returns>
public static string GetMd5Str32(string strSource)
{
byte[] bytes = Encoding.ASCII.GetBytes(strSource);
byte[] hashValue = ((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("MD5")).ComputeHash(bytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 16; i++)
{
sb.Append(hashValue[i].ToString("兄明埋x2"));
}
return sb.ToString().ToUpper();
}
#endregion
#region 核对md5编码是否一致:CheckMd5String()
/// <summary>
/// 核对md5编码是否一致
/// </summary>
/// <param name="ConvertString"></param>
/// <returns>如果一致返回true,否则返回false</returns>
///
public static bool CheckMd5String(string str1, string str2)
{
string md5String = str1; //需要验证的字符串
string md5DbString = str2; //需要核对的32位md5编码
int result = string.Compare(md5.Program.GetMd5Str32(str1), md5DbString, true);
if (result == 0)
{
return true;
}
else
{
return false;
}
}
#endregion
}
}
修改“UserControl1.Designer.cs”中的命名空间为“md5”,方法为“Program”,即可生成dll文件。
在...\bin\Debug文件假下,可以找到相应的dll文件。
二、部署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();
}
}
}
三、注意点:
1、在C#应用程序开发过程中,加载dll文件时,报错“未能加载文件或程序集“md5, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。”,请指点一下是什么原因?
解决:这是因为加载dll的路径问题,正确加载方式为:在“解决方案”的“引用”文件上右击鼠标,选择“添加引用”---》在“浏览”选项卡中添加引用(注意:自己定义的dll文件不能在“.NET”选项卡中添加。)
❹ c语言怎么调用dll文件
由于c的sdk编程的时候调用的api也应该是从dll中导出来的,这样c应该也是内能调用dll的,c语言调用dll文件容内部函数的方法如下:
1:用c调用一个加载器LOADER<可能是个api函数>;
2:加载目标dll,比如xx.dll
3:找到需要调用的函数的地址P_FUNC
4:调用FUNC即可
❺ dll文件放在哪
你好:
当然是放来在系统盘啊自,
很高兴能帮到您,这个DLL其实是一个动态链接库文件,是一些多个程序同时使用的代码
,如果您想要打开,只有运行一些文件就可以了(Windows的程序在Windows环境下操作
)。建议您不要删除哈,一旦删除肯定会出问题的。
如果你的电脑提示丢失的话:
去网上下载这个DLL文件,将其放置到system32目录下面
重启系统,或者在CMD下面运行regsvr32 *.dll注册该DLL
同时我还推荐用管家修复缺失DLL文件的,腾讯电脑管家的电脑诊所有这个功能哟!
如果您对我的答案不满意,可以继续追问或者提出宝贵意见,谢谢,祝您生活愉快
❻ 在C语言中怎样调用*dll文件,该怎么处理
生成动态库文件后,那么debug目录下会同时又.lib和.dll文件。
而你的程序中只需加入#pragma comment(lib, "xxxx.lib")就可以调用。这个回是微软的答调用方法。在linux下是.so文件;要设置环境变量。话说看书了解下更快。
❼ C#中如何调用C的DLL文件,能否给出具体的方法,最好举个例子。非常感谢
假设名为a.dll导出了函数int sum(int a, int b);
应这样调用:
HMODULE hLib = LoadLibrary("a.dll"); //加载a.dll,这里是假设a.dll与程序放在同一目录
typedef int (*funcSum)(int,int); // 定义函数指针
funcSum sum = (funcSum) GetProcAddress(hLib, "sum"); //获取函数地址
int ret = sum(1,2); //调用
FreeLibrary(hLib); //释放
❽ C语言 引用DLL 调用DLL
首先如果有.lib文件的话,直接在最开始加一句 #pragma comment(lib,"1.lib")然后声明一下Msgbox函数比如你的Msgbox函数是 int Msgbox(char * str1,char *str2);那么你应该 _declspec(dllimport) int Msgbox(char *str1,char *str2);然后你在函数中就可以直接用Msgbox函数了 第二种是动态加载dll 直接在要用的地方HINSTANCE hinst=LoadLibrary("1.dll");typedef int (*p)(char*,char*);//这个是定义一个函数指针然后用p pfun=(p)GetProcAddress(hinst,"Msgbox");然后就可以调用了