链接动态库出现的怪现象!!!

z_h258 2014-07-02 11:17:13
我手头有两个动态库A,B两个没有任何关系。
我对比过A,B两个动态库的项目属性基本一样。
两个项目分别生成A.DLL,A.LIB。B.DLL,B.LIB。
现在的问题是:
我用隐式包含调用A,B动态库。如下:

#include "A.h"
#include "B.h"
#pragma comment(lib,"A.lib")
#pragma comment(lib,"B.lib")

在程序中分别使用A,B中的函数。
现在问题出现的是:
1、我把A.DLL改名之后,程序依然可以运行,使用A的函数也是正常。
2、如果我把b.dll改名,程序运行不起来,系统提示“无法启动此程序,因为计算机中丢失B.DLL”等等。
2中描述的情况是正常现象,关键是1中出现的情况我死活搞不清楚到底哪里有问题。
PS:我确定A.LIB不是静态库,它的大小只有不到10KB,A.DLL大小为500KB左右。
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
z_h258 2014-07-02
  • 打赏
  • 举报
回复
别沉了啊
z_h258 2014-07-02
  • 打赏
  • 举报
回复
引用 2 楼 fang098 的回复:
[quote=引用 楼主 z_h258 的回复:] 我手头有两个动态库A,B两个没有任何关系。 我对比过A,B两个动态库的项目属性基本一样。 两个项目分别生成A.DLL,A.LIB。B.DLL,B.LIB。 现在的问题是: 我用隐式包含调用A,B动态库。如下:

#include "A.h"
#include "B.h"
#pragma comment(lib,"A.lib")
#pragma comment(lib,"B.lib")
在程序中分别使用A,B中的函数。 现在问题出现的是: 1、我把A.DLL改名之后,程序依然可以运行,使用A的函数也是正常。 2、如果我把b.dll改名,程序运行不起来,系统提示“无法启动此程序,因为计算机中丢失B.DLL”等等。 2中描述的情况是正常现象,关键是1中出现的情况我死活搞不清楚到底哪里有问题。 PS:我确定A.LIB不是静态库,它的大小只有不到10KB,A.DLL大小为500KB左右。
A.dll是不是在你的系统目录下也有一份啊。[/quote] 我去,研究半天,确实在系统目录下也有一份。
fang 2014-07-02
  • 打赏
  • 举报
回复
引用 楼主 z_h258 的回复:
我手头有两个动态库A,B两个没有任何关系。 我对比过A,B两个动态库的项目属性基本一样。 两个项目分别生成A.DLL,A.LIB。B.DLL,B.LIB。 现在的问题是: 我用隐式包含调用A,B动态库。如下:

#include "A.h"
#include "B.h"
#pragma comment(lib,"A.lib")
#pragma comment(lib,"B.lib")
在程序中分别使用A,B中的函数。 现在问题出现的是: 1、我把A.DLL改名之后,程序依然可以运行,使用A的函数也是正常。 2、如果我把b.dll改名,程序运行不起来,系统提示“无法启动此程序,因为计算机中丢失B.DLL”等等。 2中描述的情况是正常现象,关键是1中出现的情况我死活搞不清楚到底哪里有问题。 PS:我确定A.LIB不是静态库,它的大小只有不到10KB,A.DLL大小为500KB左右。
A.dll是不是在你的系统目录下也有一份啊。

15,471

社区成员

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

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