当前位置:  编程技术>c/c++/嵌入式

VC6.0如何创建以及调用动态链接库实例详解

    来源: 互联网  发布时间:2014-10-11

    本文导语:  小弟在公司的职责,在上篇博客中已经简约介绍。这边博客主要介绍技术的应用而不在细究原理。因为公司项目着急,出结果要紧,并且咱也不是专注搞研究的,所以,基本懂了原理后,直接上手工作,搞出demo来最好。 至于...

小弟在公司的职责,在上篇博客中已经简约介绍。这边博客主要介绍技术的应用而不在细究原理。因为公司项目着急,出结果要紧,并且咱也不是专注搞研究的,所以,基本懂了原理后,直接上手工作,搞出demo来最好。

至于公司工作情况,今天暂且略过,当然也不是一两句能够表达清楚的。后面会有相应的工作总结,敬请期待……

现在,废话少说,直奔主题——VC6.0中创建动态链接库。
作为客户与后台的中介,为了更好的调节两方的关系,我明智滴选择了webservice以及动态链接库。在与客户c++使动态链接库方式,而与后台java,使用webservice来交流沟通。
既然有了动态链接库,肯定大家会想到静态链接库。呵呵,这个是相对的。那这两者有什么区别呢?那又为什么选择了动态链接库呢?
静态链接库:是把lib文件也打包到了exe文件中。
动态链接库:没有把lib文件打包到exe文件中,若是使用,则直接加载卸载相应的dll文件。
并且,静态链接库中不允许包含静态链接库和动态链接库,而动态链接库中是允许包含静态链接库和动态链接库的。因为小弟封装的dll中是调用客户的dll,并且有可能包含另外自己的动态链接库。
鉴于此,小弟选择了动态链接库。
还有一点是,动态链接库,也是分为三种情况的。一是非MFC的dll(也就是控制台的dll),二是常规的MFC的dll(其中又分静态的dl和共享的dll),三是扩展的MFC 的dll。并且MFC的dll可以被MFC程序或者控制台程序调用。
因为小弟封装的dll,需要供MFC程序调用,所以选择使用了MFC常规的dll。并且使用控制台程序做测试。
首先,在新建工程中选择MFC AppWizard (dll)
然后在头.h文件中,声明被外界调用的函数
代码如下:

extern "C" _declspec(dllexport) char* queryFunctionByFID(char* funcId);

声明后,在cpp文件中,实现此函数。
代码如下:

char* queryFunctionByFID(char* funcId)
{
…………………………
具体的操作实现}

编译,build生成。OK,在Debug下生成相应的dll,至此动态链接库生成了。然后程序就可以直接使用此dll文件了。
然后呢。把dll文件copy到相应的测试dll程序(调用dll的程序)下。使用方式如下:
我测试dll程序中,是使用的控制台程序,这样简单方便,当然使用MFC程序也可以。
比如:我们新建一个控制台程序,然后在main方法中,写如下:
代码如下:

//声明函数指针 写明函数参数个数,参数类型以及返回值类型
typedef char* (* queryFunctionByFID)(char*);
//加载动态链接库,返回DLL文件的句柄
HINSTANCE hDLL=NULL;
//加载动态链接库,dll名称要与刚才生成的dll名称保持一致。
hDLL=LoadLibrary("IProcessInstIn.dll");
queryFunctionByFID saveProcess=NULL;
//加载动态链接库中相应的函数
saveProcess=(queryFunctionByFID)GetProcAddress(hDLL,"queryFunctionByFID");
//真正的调用相应的函数
cout

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • VC6.0代码自动提示 VC6.0在win7环境下代码提示智能化
  • 100分求java +VC6.0使用JNI的最简单例子
  • linux下有没有类似vc6的集成开发环境??
  • 在JNI编程中创建共享库时(.C->.DLL)(vc6.0环境…………多谢高手指教!
  • VC6怎样读取Nand Flash 中的数据?
  • vc6编写python扩展的方法分享
  • 如何在VC6中编译Qt程序
  • mingw dev stdio(for win) or vc6 在win 下做gtk程序,怎么配置?
  • 如何在VC6.0环境下编译linux程序
  • 【人才】有没有人会用VC6.0/VS2003.NET/VS2005.NET写WINDOWS下的驱动程序呀。
  • VC6.0常见链接错误与解决方法
  • VC6.0打开文件以及向工程中添加文件时程序崩溃自动退出解决方法
  • VC6.0常用快捷键大全
  • 菜鸟问题:为什么在VC6.0可以编译成功,在Linux下为什么不能编译成功?
  • 在VC6中,对链表的操作!编译没问题,但在运行的时候说“内存不能写”,谢谢
  • VC6.0实现读取Excel数据的方法
  • vc6.0中c语言控制台程序中的定时技术(定时器)
  • 快速掌握VC6.0中各种宏注释应用(附图)
  • VC6.0常见编译错误提示附解决方法
  • 使用VC6.0对C语言程序进行调试的基本手段分享




  • 特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3