dll调用疑问

shanhe972005 2007-11-22 05:09:17
我看了一个vc6.0编写的例子,使用动态库xxx.lib 。
该工程目录下有xxx.lib和xxx.h,然而在程序中即没有显式调用也没有隐式调用的代码,项目的link中也没有包含该lib,编译却通过了!运行正常。
为什么?难道是该dll特殊?
有经验的请赐教
...全文
107 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanhe972005 2007-11-23
  • 打赏
  • 举报
回复
如下:
#ifndef WINSDATA
#define WINSDATA __declspec(dllimport)
#endif

有什么用吗?
jameshooo 2007-11-23
  • 打赏
  • 举报
回复
看看DLL提供的头文件里是否有 __declspec(import) 之类的
shanhe972005 2007-11-23
  • 打赏
  • 举报
回复
10楼,external Dependencies里没有
shanhe972005 2007-11-23
  • 打赏
  • 举报
回复
已经解决了,虽然各位没有正确答案,还是谢谢捧场。
shanhe972005 2007-11-23
  • 打赏
  • 举报
回复
问题是头文件里没有#pragma comment,我在上面已经说过了。
我现在在工程的一些文件中发现了包含xxx.lib的行,但不知道是怎么加进去的。
像Pxxx.dsp Pxxx.opt Pxxx.plg Pxxx.vcproj
zzw315 2007-11-23
  • 打赏
  • 举报
回复
在你的VC的Project Settings->link->Gerneral->Object/LibraryModules 找找看!
jameshooo 2007-11-23
  • 打赏
  • 举报
回复
这个定义在DLL项目中表示导出符号,在使用此DLL的项目中表示导入符号。DLL提供的头文件应该也会包含#pragma comment(lib, "xxx.lib")这样的语句,省去了你的麻烦
rolen 2007-11-22
  • 打赏
  • 举报
回复
不是菜单,是类视图旁边的文件视图里找
rolen 2007-11-22
  • 打赏
  • 举报
回复
在Workspace->FileView->External Dependencies里找.lib文件
shanhe972005 2007-11-22
  • 打赏
  • 举报
回复
6楼,没找到你说的地方,你写的对吗?
shanhe972005 2007-11-22
  • 打赏
  • 举报
回复
4楼的大哥,你说的没错啊。
可那个程序里就是找不到你说的这些代码。
rolen 2007-11-22
  • 打赏
  • 举报
回复
刚才没有看清楚

看你的工程里有没有
#pragma comment(lib, "xxx")
或者在File View->External Dependencies里看看
shanhe972005 2007-11-22
  • 打赏
  • 举报
回复
该动态库被安装到windows\system32下,使某外设的驱动。
rolen 2007-11-22
  • 打赏
  • 举报
回复
lib文件保存了该dll的导出函数名。
调用动态库有两种方法
1.隐式调用
包含.lib和.h文件就可以
2.显式调用
用LoadLibrary得到dll句柄,然后用GetProcAddress得到需要的函数
shanhe972005 2007-11-22
  • 打赏
  • 举报
回复
2楼,没有。你说的就是隐式调用了。
没有#pragma comment(lib, "xxx")
也没有loadlibrary("xxx.dll")
dyw 2007-11-22
  • 打赏
  • 举报
回复
源代码中是否使用了#pragma comment(lib, "xxx")
stivenjia 2007-11-22
  • 打赏
  • 举报
回复
什么意思〉?
不明白

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧