有没有人知道。我用VC的NMAKE来编译,最后提示我LINK : fatal error LNK1181: cannot open input file "C:\Program.obj"这是什么回事情?

timefg 2001-04-17 03:36:00
我的MAKE文件里面没有涉及到C:\PROGRAM的东西。目录里也没有文件PROGRAM。OBJ
...全文
979 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxbyl 2001-04-17
  • 打赏
  • 举报
回复
To:Solmyr_biti
老大,拿出些专业精神来好不好??那个数字是在建目录的时候就定好的,我再faint~~~~~~~~~
code-is-poetry 2001-04-17
  • 打赏
  • 举报
回复
因为o<v.
sxbyl 2001-04-17
  • 打赏
  • 举报
回复
Faint~~~~~~~~~~~~
你应该用过DOS吧?DOS的文件名是8.3制的,即文件名称最长8个字符,后缀最长3个字符,NT和Win95开始采用了长文件名方式,但为了和DOS兼容,得有个方法让DOS也能访问长文件名,或是文件名中有空格的特殊文件名。M$采用的方法就是取长文件名的前六个字符,然后加一个~x,这个x是一个从1开始往上累加的数字,我的Program Files里先有的Microsoft Office目录,后有的Microsoft Visual Studio,所以,就用Micros~1代表了Microsoft Office,用Micros~2代表了Microsoft Visual Studio,这不是我规定的,这是系统规定的。
你在命令行方式下试一下就知道了
cd progra~1\micors~1
dir
timefg 2001-04-17
  • 打赏
  • 举报
回复
请问白菜,你的机器上怎么使Micros~1代表了Microsoft Office呢?


sxbyl 2001-04-17
  • 打赏
  • 举报
回复
比如我的机子上:C:\Program Files\Microsoft Visual Studio\WORK
可以写成C:\Progra~1\Micros~2\Work就可以了
意思就是将长文件名写成8.3的形式,那个数字是1还是2或是别的看你是否有重复的了,
我的机子上Micros~1代表了Microsoft Office
timefg 2001-04-17
  • 打赏
  • 举报
回复
我现在是这样的错误了C:\Program Files\Microsoft Visual Studio\VC98\Lib\MAPI.LIB : fatal error LNK1136
: invalid or corrupt file
timefg 2001-04-17
  • 打赏
  • 举报
回复
比方说我要加上C:\Program Files\Microsoft Visual Studio\VC98\Lib这个目录,使LIB库可以在这个目录找到。我应该怎么加呀?这样可以吗?
LIBPATH1="C:\Program Files\Microsoft Visual Studio\VC98\Lib"
LIBS = $(LIBPATH1)\*.lib
BINPATH = ..\BIN
COMPILER = cl
LINKER = link
LIBRARIAN = lib
DKDEFINES = -DLINT_ARGS -DDKOS_NT

$(COMPILER) $(DKCFLAGS) $*.c

$(BINPATH)\ctu.exe : $(OBJS)
$(LINKER) -out:$(BINPATH)\ctu.exe $(OBJS) $(LIBS)
timefg 2001-04-17
  • 打赏
  • 举报
回复
比方说我要加上C:\Program Files\Microsoft Visual Studio\VC98\Lib这个目录,使LIB库可以在这个目录找到。我应该怎么加呀?这样可以吗?
LIBPATH1="C:\Program Files\Microsoft Visual Studio\VC98\Lib"
LIBS = $(LIBPATH1)\*.lib
BINPATH = ..\BIN
COMPILER = cl
LINKER = link
LIBRARIAN = lib
DKDEFINES = -DLINT_ARGS -DDKOS_NT

$(COMPILER) $(DKCFLAGS) $*.c

$(BINPATH)\ctu.exe : $(OBJS)
$(LINKER) -out:$(BINPATH)\ctu.exe $(OBJS) $(LIBS)
timefg 2001-04-17
  • 打赏
  • 举报
回复
TO白菜。RE实在想不通你为什么用命令行方式
哦,我在学写MAKEFILE文件
对了,你说的命令行文件(目录)名用PROGRA~1之类的形式,怎么写呀?

好象是因为有空格的原因。
joke100 2001-04-17
  • 打赏
  • 举报
回复
sorry!!!!!!!!!!!!!!!!!!!!!!!!!
原因大家都明白了,上面我提的解决办法是错误底,嘿嘿。。。
并不是/ALL的问题,而是...的问题,嘿嘿

最终解决:
在下面各类Front-End Utility前面加上LINK /
/EDIT
/DUMP
/LIB

如:
LINK /DUMPBIN /ALL "c:\Program Files\...yourfile.xxx"
LINK /LIB /ALL "c:\Program Files\...yourfile.xxx"
LINK /EDIT /ALL "c:\Program Files\...yourfile.xxx"

当然白菜提的方法也可以,把工程换个目录^_^,哈哈

sxbyl 2001-04-17
  • 打赏
  • 举报
回复
那是因为你要操作的文件在Program Files\...里,命令行方式空格时参数的分隔符,所以,命令行文件(目录)名用Progra~1之类的形式
BTW:实在想不通你为什么用命令行方式
joke100 2001-04-17
  • 打赏
  • 举报
回复
在文件的路径中含有内嵌空格的部分...
c:\Program Files\...被在空格处截断导致此类错误

解决:
加上参数/ALL

例如
DUMP /ALL "c:\Program Files\...yourfile.xxx"
或者
LINK /DUMPBIN /ALL "c:\Program Files\...yourfile.xxx"

16,551

社区成员

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

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

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