用的來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");然後就可以調用了