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++编程问题