我是在project/setting 然后debug中的Additional DLLS 加入的,但是不知道怎么用
解决方案 »
- vc在当前对话框改变连一个对话框里的按钮上显示的文字,另一个对话框为当前对话框的一个变量,如下
- 一个刚接触VC不久的的菜鸟提出的一个简单的关于线程的问题,大家帮帮忙啊
- 应届小硕想在上海或南京,找个c++开发工作,不知有没有单位招人?有一年vc开发经验
- 请问如何让SHFileOperation继续?
- 如何实现网络连接修复功能?
- 调用系统其它账户运行DOS命令的问题。
- Combo box控件简单问题
- 怎么让ie中的登录信息不记录下来?
- 各位大哥.....
- 我是DOS程序员,目前转至WINDOWS的VC++,却无从下手?
- 如何实现鼠标在控件上划过时,在状态栏中显示提示消息的功能?
- 关于消息发送(我只有这么多分了,麻烦各位帮忙)
debug中加入dll
工程文件夹中加入.lib文件和头文件
程序中包含头文件就能用了
hinst=LoadLibrary("Protocol.dll");
typedef CString ( _stdcall *firstlast)(LPBYTE lpdata,PCHAR pcarNo,PCHAR Type,int a,int b);
firstlast mess=(firstlast)GetProcAddress(hinst,"SG_SToC");
if(!mess)
{
AfxMessageBox("addresserror",MB_OK,0);
return;
} strData=mess(lpData,pCarNo,Type,lpData_len,11);
//Dlltest.h
#pragma comment(lib,"MyDll.lib")
extern "C"_declspec(dllimport) int Max(int a,int b);
extern "C"_declspec(dllimport) int Min(int a,int b);//TestDll.cpp
#include"Dlltest.h"
void main()
{
int a;
a=min(8,10)printf("比较的结果为%d\n",a);
}
在创建DllTest.exe文件之前,要先将MyDll.dll和MyDll.lib拷贝到当前工程所在的目录下面,也可以拷贝到windows的System目录下。如果DLL使用的是def文件,要删除TestDll.h文件中关键字extern "C"。TestDll.h文件中的关键字Progam commit是要Visual C+的编译器在link时,链接到MyDll.lib文件,当然,开发人员也可以不使用#pragma comment(lib,"MyDll.lib")语句,而直接在工程的Setting->Link页的Object/Moduls栏填入MyDll.lib既可。 2.显式链接 显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法作到的,所以显式链接具有更好的灵活性,对于解释性语言更为合适。不过实现显式链接要麻烦一些。在应用程序中用LoadLibrary或MFC提供的AfxLoadLibrary显式的将自己所做的动态链接库调进来,动态链接库的文件名即是上述两个函数的参数,此后再用GetProcAddress()获取想要引入的函数。自此,你就可以象使用如同在应用程序自定义的函数一样来调用此引入函数了。在应用程序退出之前,应该用FreeLibrary或MFC提供的AfxFreeLibrary释放动态链接库。下面是通过显式链接调用DLL中的Max函数的例子。void main(void)
{
typedef int(*pMax)(int a,int b);
typedef int(*pMin)(int a,int b);
HINSTANCE hDLL;
PMax MaxHDLL=LoadLibrary("MyDll.dll");//加载动态链接库MyDll.dll文件;
Max=(pMax)GetProcAddress(hDLL,"Max");
A=Max(5,8);
Printf("比较的结果为%d\n",a);
FreeLibrary(hDLL);//卸载MyDll.dll文件;
}
在上例中使用类型定义关键字typedef,定义指向和DLL中相同的函数原型指针,然后通过LoadLibray()将DLL加载到当前的应用程序中并返回当前DLL文件的句柄,然后通过GetProcAddress()函数获取导入到应用程序中的函数指针,函数调用完毕后,使用FreeLibrary()卸载DLL文件。在编译程序之前,首先要将DLL文件拷贝到工程所在的目录或Windows系统目录下。