c語言調用cdll
發布時間: 2023-01-13 09:01:12
『壹』 c語言如何調用DLL
//dll
#include<windows.h>
extern"C"//保持C語言文件
void_declspec(dllexport)tryProc()//定義函數
{
MessageBox(NULL,_T("a"),_T("a"),MB_OK);
}
-------------------------------------
//C
#include<windows.h>
intmain()
{
HMOUDLEdll=LoadLibrary(/*DLL文件名*/);
if(dll!=NULL)
{
FARPROCtry=GetProcAddress(dll,"tryProc");
if(try!=NULL)
{
tryProc();//假如函數有返回值,可以用try()得到返回值
/*_asmcalltryProc*/
}
}
return0;
}
『貳』 C語言調用C++寫的DLL
C++代碼在開頭和結尾擴上extern "C"{ }即可,其他的估計你應該是內行。
『叄』 c語言怎麼調用dll文件
由於c的sdk編程的時候調用的api也應該是從dll中導出來的,這樣c應該也是能調用dll的,c語言調用dll文件內部函數的方法如下:
1:用c調用一個載入器LOADER<可能是個api函數>;
2:載入目標dll,比如xx.dll
3:找到需要調用的函數的地址P_FUNC
4:調用FUNC即可
『肆』 c語言調用dll里的命令並輸出
根據我的猜測,有兩種情況
1.如果voidGetNum(char*s);是把輸入的字元儲存在*s中的話:
#include<WINDOWS.H>
#include<WINBASE.H>
#include<stdio.h>
typedefvoid(*MYPROC)(char*);/*這里要與GetNum的返回值和參數對應*/
voidmain(){
HINSTANCELibHandle;
MYPROCProcAdd;
charch;
charsysbuf[]="GetNum";/*過程名*/
LibHandle=LoadLibrary("GetNum.dll");/*載入dll*/
ProcAdd=(MYPROC)GetProcAddress(
LibHandle,sysbuf);/*獲取函數sysbuf的地址*/
ProcAdd(&ch);
printf("%c ",ch);
}
2.如果你的GetNum是
intGetNum(char*s)
{
inti=0,ans=0;
while(s[i]>='0'&&s[i]<='9')
{
ans=s[i]-'0'+ans*10;
}
returnans;
}
#include<WINDOWS.H>
#include<WINBASE.H>
#include<stdio.h>
typedefint(*MYPROC)(char*);/*改*/
voidmain(){
HINSTANCELibHandle;
MYPROCProcAdd;
chars[100];/*改*/
charsysbuf[]="GetNum";/*過程名*/
LibHandle=LoadLibrary("GetNum.dll");/*載入dll*/
ProcAdd=(MYPROC)GetProcAddress(
LibHandle,sysbuf);/*獲取函數sysbuf的地址*/
scanf("%s",s);/*改*/
printf("%d ",ProcAdd(&s));/*這里調用並輸出結果*/
}
熱點內容