MFC Extension Dll入门级问题,相信做过的人只要一句话就可解决

goodsong 2002-05-16 11:42:14
我将Debug 版 output file name 改成testd.dll后编译出现如下警告:
testd.exp : warning LNK4070: /OUT:test.dll directive in .EXP differs from output filename "Debug/testd.dll"; ignoring directive
然后在testdemod.exe里用的时候就说找不到test.dll
只有将testd.dll改名成test.dll才可用
但我从网上下的例子却是可以用的。
仔细检查终于发现是testd.lib里的Dll文件名仍为test.dll
而网上的例子编译出的*.lib里的却是*d.dll。
我想是编译设置的问题,但找了好久也不知道具体在哪里改。
请问该如何解决上面的问题?
谢谢!
...全文
78 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
loyee 2002-05-17
  • 打赏
  • 举报
回复
1)试一下删除所有工程的临时文件(.ncb;.opt;.aps;DEBUG目录),然后重新编译.

2)修改资源version中的InternalName,OriginalFileName

没有经过验证,你若试了,请告诉结果.
goodsong 2002-05-17
  • 打赏
  • 举报
回复
而且例子的Demo里就包含了Dll的头文件(当然仅仅是我的发现),
连link->object/library modules里都没填*d.lib
真不知道在哪些地方设置了。
goodsong 2002-05-17
  • 打赏
  • 举报
回复
MFC Extension Dll不需要(微软也不提倡)改DEF
我下的例子也没改DEF,但我的就是有问题,例子就没问题
mousubin 2002-05-17
  • 打赏
  • 举报
回复
改了DEF应该可以了的啊,你是否忘了更新lib什么什么的
goodsong 2002-05-17
  • 打赏
  • 举报
回复
loyee()别忘了到另一贴领分
goodsong 2002-05-17
  • 打赏
  • 举报
回复
结贴。
谢谢!今晚没白熬夜
mousubin 2002-05-17
  • 打赏
  • 举报
回复
靠,还看轻我们
mousubin 2002-05-17
  • 打赏
  • 举报
回复
刚做了以下,发现这样竟然行了,删除项目列表里的DEF文件
goodsong 2002-05-17
  • 打赏
  • 举报
回复
非常感谢两位这么晚了还回答我的问题
我将另开一贴加分,不是看轻了两位,算是交个朋友吧。
goodsong 2002-05-17
  • 打赏
  • 举报
回复
to loyee()
改了DEF没问题了。
谢谢!
但我还想知道为什么不改DEF也可以
goodsong 2002-05-17
  • 打赏
  • 举报
回复
to mousubin(无情剑客16155843)
是可以这样做,但我就是受不了:
为什么别人的能行我的就是不行?
所以想弄清楚一下。
而且这样比建两个工程要方便一些呀。
loyee 2002-05-17
  • 打赏
  • 举报
回复
InternalName,OriginalFileName只是一些文件的静态信息保存在文件的资源头里面.这不是你问题的原因.我想若改了DEF文件还有问题的话,很大可能你应用程序连接了老的.LIB文件.
goodsong 2002-05-17
  • 打赏
  • 举报
回复
to loyee()
这样做是可以,thx总算解决了一半
还有一半:我下的例子并没有改def文件,为什么会得出正解的*d.lib和*d.dll?
goodsong 2002-05-17
  • 打赏
  • 举报
回复
to loyee()
InternalName,OriginalFileName有什么用?
我下载的例子没有改InternalName,OriginalFileName
和工程缺省的一致,所以不是这里的问题。
mousubin 2002-05-17
  • 打赏
  • 举报
回复
如果你只是为了区分版本,为何不建两个工程,让他们的文件公享
loyee 2002-05-17
  • 打赏
  • 举报
回复
jiangsheng(蒋晟卧病中)的方法没错.

修改DEF文件中下面一行就没有警告了.而且别的工程中也可以正常连接改名后的DLL.我做了实验是没有什么问题.你最好查一些你testdemod.exe里面连接的Test.lib是否是DLL改名后产生的.

LIBRARY "Testd"
goodsong 2002-05-17
  • 打赏
  • 举报
回复
to mousubin(无情剑客16155843)
不对啊。
当把output file name 改成testd.dll后,Project Options里就自动改成了testd.lib,但complie时问题仍然存在。
loyee 2002-05-17
  • 打赏
  • 举报
回复
资源version就是在Resource View中的Version 段里面有InternalName,OriginalFileName可以设置.
mousubin 2002-05-17
  • 打赏
  • 举报
回复
Link->Project Options里面将test.lib改为testd.lib
goodsong 2002-05-17
  • 打赏
  • 举报
回复
不用发了,就是用向导生成的,就改了一下名字
大虾告诉我怎样做才能生成testd.lib和testd.dll并且不出现警告就行了。
而不是缺少的文件名test.lib和test.dll,
因为我想将调试版(debug)和发行版(release)区别开
很简单的问题啊,我说的不清楚吗?
我用的是VC6.0,各位可以试一下,用向导
不用一分钟就可以看到我说的症状了
加载更多回复(6)

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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