Программирование для dos4g.exe
Программу компилирую с помощью Visual Studio 5.0
У меня есть dos4g.exe с примерами, я взял hello world пытаюсь компилировать. Мой BAT файл для компиляции следующий
cl.exe /c /G3 /Z7 /I "C:\Program Files\DevStudio\VC\include" hello.c
link.exe /DEBUG /DEBUGTYPE:CV /SUBSYSTEM:CONSOLE /INCREMENTAL:NO /NOD /PDB:NONE /OUT:hello.exe /MAP:hello.map /DEF:hello.def /STUB:"D:\DOS4G\bin\pestub.exe" /LIBPATH:"C:\Program Files\DevStudio\VC\lib" hello.obj
pause
мой .def файл следующий
NAME HELLO
DESCRIPTION "PE C++ Hello World Example Program"
VERSION 1.0
CODE PRELOAD MOVEABLE DISCARDABLE
DATA PRELOAD SINGLE
EXPORTS
DOS4GOPTIONS
мой файл hello.c следующий (взят из примеров dos4g.exe поставки)
/*
* Standard Hello World program
* Copyright (c) 1996 Tenberry Software, Inc.
* All Rights Reserved
*/
// Standard header files
#include <stdio.h>
// Test DOS4GOPTIONS string export by preventing the startup banner from
// being displayed
char DOS4GOPTIONS[] =
"dos4g=StartupBanner:OFF\n";
main(int ac, char **av)
{
// Print the standard response to the screen
printf("Hello, World!\n");
}
Ошибка на скриншоте. Что делать?
UPD.
error LNK2001: unresolved external symbol _printf
error LNK2001: unresolved external symbol _mainCRTStartup
Добавлю что есть еще исходный файл (из поставки) Makefile для Polymake:
# Hello world example makefile
#
# Also shows example of exporting DOS4GOPTIONS
#
# Built using MSVC\C++ v4.0 and MASM6.11 or Watcom 10.5 and WASM
# Makefile scripted to use Polymake
#
# Copyright (c) 1996 Tenberry Software, Inc.
# All Rights Reserved
all : hellomcp.exe
4GDIR=.\DOS4G
PESTUB=$(4GDIR)\bin\pestub.exe
MSVC4Path="C:\MSVC"
MSVC4Env :
@%setenv PATH=$(MSVC4Path)\BIN;$(MSVC4Path)\BIN\WIN95;$(MASM611Path)\bin;
@%setenv INCLUDE=.;$(4GDIR)\INCLUDE;$(MSVC4Path)\INCLUDE;
@%setenv LIB=$(4GDIR)\lib;$(MASM611Path)\lib;$(MSVC4Path)\LIB;
@%setenv MSDEVDIR=$(MSVC4Path)
AOPTS = /coff /c
COPTS = /c /G3 /Z7 /I. /DMSVC40
LIBS = $(MSVC4Path)\LIB\LIBC.LIB $(4GDIR)\LIB\KERNEL32.LIB
.c.obj :
@%do MSVC4Env
:cl $(COPTS) $<
############################################################################
#
# Make Microsoft PE C++ HELLO objects and executables
#
############################################################################
hellomcp.exe : hellomcp.obj $(LIBS) hellomcp.def
@%do MSVC4Env
:link <@<
/DEBUG
/DEBUGTYPE:CV
/SUBSYSTEM:CONSOLE
/INCREMENTAL:NO
/NOD
/PDB:NONE
/OUT:$*.exe
/MAP:$*.map
/DEF:$*.def
/STUB:$(PESTUB)
$[m, *.obj, $**]
$[m, *.lib, $**]
<
:$(4GDIR)\bin\pe2dbg $*.exe
:$(4GDIR)\bin\w32patch -T $*.exe
hellomcp.obj : hello.c
@%do MSVC4Env
:cl $(COPTS) /Fohellomcp.obj $<
hellomcp.def: makefile
@echo NAME HELLOMCP > hellomcp.def
@echo DESCRIPTION "PE C++ Hello World Example Program" >> hellomcp.def
@echo VERSION 1.0 >> hellomcp.def
@echo CODE PRELOAD MOVEABLE DISCARDABLE >> hellomcp.def
@echo DATA PRELOAD SINGLE >> hellomcp.def
@echo EXPORTS >> hellomcp.def
@echo DOS4GOPTIONS >> hellomcp.def
Но я решил скомпилировать вручную с помощью BAT файла.