windows环境DLL链接问题之一:dllimport是必须的吗?
来源:互联网 发布:opengl shader编程 编辑:程序博客网 时间:2024/06/07 00:24
最近看了Windows核心编程中关于DLL链接的章节,遇到很多很多问题(唉 本人比较笨拙),在此做个小小笔记,也希望能帮到同是程序猿的你们!!
核心编程第十九章讲述了DLL隐含链接的内容,本人完全按照书上敲进去的测试代码,无奈总是编译出错,并且大多是unresolved external symbol问题,于是追根究底,用了一天半的时间看了C/C++修饰符问题,最后才明白,大多问题也都出在这里!
废话不多说,代码就是我们最好的语言啦!下面是我的测试程序的例子,例子也是摘抄的,但是修改了大部分,用的vs2008的IDE:
首先是Dll测试头文件:DllCom.h
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DLL的测试文件就到这里啦!
代码中有些许注释,相信也能看的懂,回到我们的问题:dllimport是不是一直都是必须的呢?
答案是:不是!
这个例子就能够很好的编译成DllCom.dll和DllCom.lib文件(只要DLL中有输出的变量或者函数,就会生成lib文件)!
根据核心编程中的描述,当可执行程序链接到一个函数或者变量时,它会查找经过C/C++规则生成的相应函数的修饰符,查找修饰符的过程就分为隐式链接与显示加载。
隐式链接:这里就用到了lib文件,通过使用__declspec(dllimport)关键字, 编译器预先知道你要引用的符号将从一个DLL文件的.lib文件引入,就能生成运行效率稍高的代码。
显示加载:LIB和DLL的区别与使用
看到这里,相信大家已经知道dllimport关键字的作用了吧!O(∩_∩)O哈哈~
- windows环境DLL链接问题之一:dllimport是必须的吗?
- windows环境DLL链接问题之二:C/C++修饰符问题
- windows环境DLL链接问题之三:C/C++修饰符问题续
- Windows DLL编程中的导入:__declspec(dllimport)
- [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题
- [你必须知道的.NET]第三十五回,判断dll是debug还是release,这是个问题
- lua链接dll的问题
- lua链接dll的问题
- 【动态链接库dll】dllimport与dllexport作用与区别
- Windows动态链接库DLL的使用
- 生成.dll时,如果只有.dll,没有.lib,如何解决?(生成.DLL提供方用的是dllexport,使用方用的是dllimport,用个宏来代替)
- DllImport调用系统DLL的方法
- windows下的动态链接问题(.dll文件的编写与调用)
- 一个dllimport 导致的链接错误LNK2019
- Windows DLL编程中的导入导出:__declspec(dllimport) ,__declspec(dllexport) ,
- Windows DLL编程中的导入导出:__declspec(dllimport) ,__declspec(dllexport)
- Windows DLL编程中的导入导出:__declspec(dllimport) ,__declspec(dllexport) ,
- Windows DLL编程中的导入导出:__declspec(dllimport) ,__declspec(dllexport)
- poj 3480 John 简单的nim博弈
- Jive源代码研究
- mysql 主从复制
- ajax验证用户登陆及记住密码
- C#操作符重载
- windows环境DLL链接问题之一:dllimport是必须的吗?
- Spring 1 IoC 2 Bean管理
- winForm用户登陆(window窗体应用程序,有改进版)
- 2013年8月28日、PS初步入门|and|Maven了解
- tomcat启动报内存溢出PermGen space错误
- 计算机专业数学图书记录
- 一个问题,关于函数嵌套后的变量作用域
- Gulliver's Travels——8、More adventures in Brobdingnag
- Smack 结合 Openfire服务器,建立IM通信,发送聊天消息