当前位置:编程学习 > C/C++ >>

c++ 编写dll 示例

编写一个简单的动态链接

dll功能如下

void msgbox(string body,string title){

MessageBox(0,body.c_str(),title.c_str(),0)

}

1一定要确保“简单”..代码尽量少

2最好标上注释

3著明具体编辑和编译过程,比如建立什么文件,要怎么建立文件之类的...(这方面我一窍不通)

--------------------------------------------------------

c++程序如何调用dll

比如刚刚写的那个dll

如何用c++程序调用

求具体代码..

最好标上注释

---------------------------------------------------------

求vb调用这个dll的代码

追问:我编译那个dll时出错啊

Linking...
Creating library Debug/dll.lib and object Debug/dll.exp
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/dll.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.

编译器尝试编译exe文件

编译dll之前需要先设置什么

答案://DLL代码

#include <windows.h>

extern "C" _declspec(dllexport) BOOL meg(HWND hwnd,char *p,char bt[])//申明函数为导出函数
{
MessageBox(hwnd,p,bt,MB_OK);//出现提示框,内容为p,bt传进来的值
return 0;
}

//调用DLL代码

typedef BOOL (* DllMeg)(HWND hwnd,char *p,char bt[]);//申明DLL函数
HMODULE hDll = LoadLibrary("DllText.dll");//加载DLL文件
if (!hDll)//为空提示出错
{
MessageBox("加载Dll文件出错");
}
else
{
DllMeg meg = (DllMeg)GetProcAddress(hDll,"meg");//加载了Dll文件之后,用GetProcAddress函数取得Dll里边函数的地址
int i;
CString str;
GetDlgItemText(IDC_EDIT1,str);//这是我用MFC写的,用来取得文本框中的文本
i = str.GetLength();
char *p = new char[i+1];
p = strcpy(p,str);
if (str == "")//如果文本为空,提示输入内容
{
MessageBox("请输入内容!");//另人Dll里的提示函数混在一起哦,这里还没调用Dll里边的函数呢
return;
}
char tm[5] = "提示";
meg(m_hWnd,p,tm);//调用DLl里的函数来显示传进去的内容
}

/定义函数原型()
typedef void(*msgbox)(string body,string title);//这句一定要有,是申明函数类型,不然系统不认识具体参数和返回值
int main(int argc, char* argv[])
{
//装载DLL文件
HMODULE hModule=LoadLibrary("Export.dll");//我举例dll文件的文件名为Exprot,这也要有
if(hModule==NULL)
{
printf("LoadLibrary error \n");
return 0;
}
//得到msgbox地址
msgbox msgbox=(msgbox)GetProcAddress(hModule,"msgbox");
if(msgbox==NULL)
{
printf("GetProcAddress error \n");
return 0;
}
//调用导出函数
msgboxx("Solo","问问之星");
//释放DLL类库
FreeLibrary(hModule);

return 0;
}

//c++的就这样调用的,不明白的追问。

锐英源有专业的Dll和钩子的解答视频,详情请看www.wisestudy.cn。

锐英源欢迎你

上一个:C++中结构体数组
下一个:C++编程问题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,