VC DEBUG模式下生成DEBUG DLL跟Lib

Vecent_ 2015-03-16 10:46:15
问题如下:
在DEBUG模式下,生成testD.dll跟testD.lib,可执行文件调用时,却提示需要test.dll,我查看testD.lib文件发现里面的却是__IMPORT_DESCRIPTOR_testDLL.__NULL__IMPORT_DESCRIPTOR_,而不是__IMPORT_DESCRIPTOR_testDLLD.__NULL__IMPORT_DESCRIPTOR_

请问如何解决????急求!!!!
...全文
210 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤客天涯 2015-03-16
  • 打赏
  • 举报
回复
首先,你exe引入lib的时候Release和Debug分别引入各自己版本的lib,其次,dll工程中把.def文件中的内容全注释掉
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 17 楼 jason_wentzel 的回复:
要不你就把.def从工程中移除,别加入工程来
因为我看到别的工程,没有注释掉.def文件,也没有移除掉.def文件,也能正常使用
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 16 楼 jason_wentzel 的回复:
[quote=引用 2 楼 Vecent_ 的回复:] [quote=引用 1 楼 jason_wentzel 的回复:] 首先,你exe引入lib的时候Release和Debug分别引入各自己版本的lib,其次,dll工程中把.def文件中的内容全注释掉
首先,我exe引入的lib是分别引入的; 其次,我是用的导出类,跟.def文件无关;[/quote] 正因为你是导出类的方式,就是采用静态链接的方式,所以你才要注释掉.def中的东西,否则不管你是 #pragma comment(lib, ".\\inc\\testD.lib")还是 #pragma comment(lib, ".\\inc\\testDLL.lib") 运行时只会找默认的dll,就是不带d的dll[/quote] 还有没有其他方法?
孤客天涯 2015-03-16
  • 打赏
  • 举报
回复
要不你就把.def从工程中移除,别加入工程来
孤客天涯 2015-03-16
  • 打赏
  • 举报
回复
引用 2 楼 Vecent_ 的回复:
[quote=引用 1 楼 jason_wentzel 的回复:] 首先,你exe引入lib的时候Release和Debug分别引入各自己版本的lib,其次,dll工程中把.def文件中的内容全注释掉
首先,我exe引入的lib是分别引入的; 其次,我是用的导出类,跟.def文件无关;[/quote] 正因为你是导出类的方式,就是采用静态链接的方式,所以你才要注释掉.def中的东西,否则不管你是 #pragma comment(lib, ".\\inc\\testD.lib")还是 #pragma comment(lib, ".\\inc\\testDLL.lib") 运行时只会找默认的dll,就是不带d的dll
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 14 楼 worldy 的回复:
链接的依赖性设置一下,目录和dll文件名都要,记得有这样解决过
应该跟可执行程序那边没关系,我对比了testD.lib跟别人能用的lib文件,里面是有差异的,在文件开头 我的是 __IMPORT_DESCRIPTOR_test.__NULL__IMPORT_DESCRIPTOR_,而别人的Lib文件开头却是 __IMPORT_DESCRIPTOR_XXXD.__NULL__IMPORT_DESCRIPTOR_
worldy 2015-03-16
  • 打赏
  • 举报
回复
链接的依赖性设置一下,目录和dll文件名都要,记得有这样解决过
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 11 楼 worldy 的回复:
[quote=引用 8 楼 Vecent_ 的回复:] [quote=引用 6 楼 worldy 的回复:] [quote=引用 5 楼 Vecent_ 的回复:] [quote=引用 3 楼 worldy 的回复:] 你没有生成调试版本
你的意思是怎么生成?[/quote] 就是dubug/release分别都要生成[/quote] 我的意思是生成了DEBUG版本的时候,可执行文件调用的时候却需要Release版本的DLL, 可执行文件程序中, 预编译 #ifdef _DEBUG #pragma comment(lib, ".\\inc\\testD.lib") #else #pragma comment(lib, ".\\inc\\testDLL.lib") #endif 可执行文件为DEBUG模式 [/quote] 你都已经指定了,那就不知道什么原因了,再搜看看[/quote] 这都不知道该怎么搜了。。。所以才在论坛求解
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 9 楼 worldy 的回复:
那你在运行程序编译的时候使用#pragram明确指定使用的库位置,试试看?
就是这样不行
worldy 2015-03-16
  • 打赏
  • 举报
回复
引用 8 楼 Vecent_ 的回复:
[quote=引用 6 楼 worldy 的回复:] [quote=引用 5 楼 Vecent_ 的回复:] [quote=引用 3 楼 worldy 的回复:] 你没有生成调试版本
你的意思是怎么生成?[/quote] 就是dubug/release分别都要生成[/quote] 我的意思是生成了DEBUG版本的时候,可执行文件调用的时候却需要Release版本的DLL, 可执行文件程序中, 预编译 #ifdef _DEBUG #pragma comment(lib, ".\\inc\\testD.lib") #else #pragma comment(lib, ".\\inc\\testDLL.lib") #endif 可执行文件为DEBUG模式 [/quote] 你都已经指定了,那就不知道什么原因了,再搜看看
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 8 楼 Vecent_ 的回复:
[quote=引用 6 楼 worldy 的回复:] [quote=引用 5 楼 Vecent_ 的回复:] [quote=引用 3 楼 worldy 的回复:] 你没有生成调试版本
你的意思是怎么生成?[/quote] 就是dubug/release分别都要生成[/quote] 我的意思是生成了DEBUG版本的时候,可执行文件调用的时候却需要Release版本的DLL, 可执行文件程序中, 预编译 #ifdef _DEBUG #pragma comment(lib, ".\\inc\\testD.lib") #else #pragma comment(lib, ".\\inc\\testDLL.lib") #endif 可执行文件为DEBUG模式 [/quote] 上面打错了 #ifdef _DEBUG #pragma comment(lib, ".\\inc\\testD.lib") #else #pragma comment(lib, ".\\inc\\test.lib") #endif
worldy 2015-03-16
  • 打赏
  • 举报
回复
那你在运行程序编译的时候使用#pragram明确指定使用的库位置,试试看?
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 6 楼 worldy 的回复:
[quote=引用 5 楼 Vecent_ 的回复:] [quote=引用 3 楼 worldy 的回复:] 你没有生成调试版本
你的意思是怎么生成?[/quote] 就是dubug/release分别都要生成[/quote] 我的意思是生成了DEBUG版本的时候,可执行文件调用的时候却需要Release版本的DLL, 可执行文件程序中, 预编译 #ifdef _DEBUG #pragma comment(lib, ".\\inc\\testD.lib") #else #pragma comment(lib, ".\\inc\\testDLL.lib") #endif 可执行文件为DEBUG模式
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 6 楼 worldy 的回复:
[quote=引用 5 楼 Vecent_ 的回复:] [quote=引用 3 楼 worldy 的回复:] 你没有生成调试版本
你的意思是怎么生成?[/quote] 就是dubug/release分别都要生成[/quote] 可是我都生成了,testD.dll testD.lib test.dll test.lib
worldy 2015-03-16
  • 打赏
  • 举报
回复
引用 5 楼 Vecent_ 的回复:
[quote=引用 3 楼 worldy 的回复:] 你没有生成调试版本
你的意思是怎么生成?[/quote] 就是dubug/release分别都要生成
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
你没有生成调试版本
你的意思是怎么生成?
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
你没有生成调试版本
什么意思?我的testD.dll 跟testD.lib都生成了啊
worldy 2015-03-16
  • 打赏
  • 举报
回复
你没有生成调试版本
Vecent_ 2015-03-16
  • 打赏
  • 举报
回复
引用 1 楼 jason_wentzel 的回复:
首先,你exe引入lib的时候Release和Debug分别引入各自己版本的lib,其次,dll工程中把.def文件中的内容全注释掉
首先,我exe引入的lib是分别引入的; 其次,我是用的导出类,跟.def文件无关;

15,471

社区成员

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

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