[如何将旧的Visual C ++代码(vc ++ 6.0)转换为Visual Studio 2019,缺少libc

问题描述 投票:0回答:1

我有一些旧的Visual C ++(v 6.0)代码,可以作为CLI应用程序运行并使用nmake文件进行构建,我想将其转换为可以在Visual Studio中构建的东西(不在IDE下的Shell窗口中)。 2019。它使用我同样构建的库。我的makefile文件将包含在底部。

我发现c:\program files (x86)\microsoft visual studio 14.0\common7\tools\vsvars32.bat这样我就可以根据需要运行nmake(我有一个.bat文件,该文件可以构建大约30个程序,作为该工具及其库的测试库,我在Emacs中运行它,并将输出与上次我进行比较运行它,期望唯一的区别是日期时间戳,编译器版本和类似项。]

但是,当我进入链接阶段时,出现错误LINK : fatal error LNK1104: cannot open file 'LIBC.lib'

我查看了相关的lib目录,发现libcxxx.lib的许多变体,但没有普通的libc.lib。我不知道问题是否出在我传递给CL或其他东西的命令行参数上。因此,这个问题。

# makefile for prog (a hello world type example)
DEFINES=
INCLUDES= -I. -I.\inc.vc -I\yxx\inc.vc -I\yxx\lib.vc
CXXFLAGS= /c /Od /W3 /Za $(DEFINES) $(INCLUDES)
CXX=cl

OBJECTS=yy_main.obj \
    yy_mylex.obj \
    yy_mypsr.obj

yy_main.obj: \yxx\lib.vc\yy_main.cpp yy_mypsr.h yy_err.tbl yy_syna.tbl
    echo $(CXXFLAGS) >$*.OPT
    $(CXX) /Fo$@ @$*.OPT \yxx\lib.vc\$*.CPP >$*.ERR
    TYPE $*.ERR

yy_mylex.obj: yy_mylex.cpp yy_mylex.h
    echo $(CXXFLAGS) >$*.OPT
    $(CXX) /Fo$@ @$*.OPT $*.CPP >$*.ERR
    TYPE $*.ERR

yy_mypsr.obj: yy_mypsr.cpp
    echo $(CXXFLAGS) >$*.OPT
    $(CXX) /Fo$@ @$*.OPT $*.CPP >$*.ERR
    TYPE $*.ERR

prog.exe: $(OBJECTS) \yxx\lib.vc\yy_lol.lib
    CL @<<
$(OBJECTS)
\yxx\lib.vc\yy_lol.lib
/link /out:prog.exe
<<


# makefile for yy_lol.lib (lists of object files pruned to be smaller)
DEFINES= -Dyy_assert_disable_
INCLUDES= -I. -I\yxx\inc.vc -I\yxx\lib.vc
ARFLAGS=
CXXFLAGS= /c /Od /W3 /Za $(DEFINES) $(INCLUDES)
CXX=cl
AR=LIB
RM=del

OBJECTS=\yxx\lib.vc\yy_asrt.obj \
    \yxx\lib.vc\yy_ast.obj \
    \yxx\lib.vc\yy_bktrk.obj \
    \yxx\lib.vc\yy_buf.obj \
    \yxx\lib.vc\yy_sym.obj

.cpp.obj:
    echo $(CXXFLAGS) >$*.OPT
    $(CXX) /Fo$@ @$*.OPT $*.CPP >$*.ERR
    TYPE $*.ERR

yy_lol.lib: $(OBJECTS)
    -$(RM) $@
    -$(AR) /out:$@ $(ARFLAGS) \yxx\lib.vc\yy_asrt.obj
    -$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_ast.obj
    -$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_bktrk.obj
    -$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_buf.obj
    -$(AR) $@ $(ARFLAGS) \yxx\lib.vc\yy_sym.obj
c++ windows visual-studio command-line-interface visual-studio-2019
1个回答
0
投票

您已经注意到,没有这样的libc:它取决于您正在使用的链接模型

  • 单线程(从VS10开始不存在)
  • 单线程调试(从VS10开始不存在)
  • 多线程
  • 多线程调试
  • 多线程DLL
  • 多线程调试DLL

它会根据您使用的模型选择不同的libc。猜测libc来自不再存在的单线程模型(非调试)。

对于相同的功能,请尝试使用libcmt.lib-多线程非调试版本。

© www.soinside.com 2019 - 2024. All rights reserved.