Hello --
Thanks for the reply
I am using visual studio .net 2003, or vc 7.1 -- It is fully installed and all
service packs applied
This version of visual studio I think was published in the fall of 2002, so its
10 years old
I unloaded the tar ball, then "cd" to the nt directory, ran "configure.bat" like
this:
configure.bat --with-msvc --no-opt --enable-checking --ldflags -map
--without-png --without-jpeg --without-gif --without-tiff
--without-xpm
then I ran
nmake -a -f makefile
these tools did build --
addpm.exe
ddeclient.exe
runemacs.exe
cmdproxy.obj did fail with the missing externs --
I did find if I modified the makefile and made USE_CRT_DLL a comment,
then the make used
libcmt.lib
and __pctype resolved
NOTE: there were issues with etags.c and ctags.c -- they need "include
<stddef.h> in them
But there were other errors -- I can reproduce it if you like --
also, in the code segment in the makefile
!ifdef USE_CRT_DLL
libc = msvcrt$(D).lib
EMACS_EXTRA_C_FLAGS= -D_DLL -D_MT -DUSE_CRT_DLL=1
!else
libc = libcmt$(D).lib
EMACS_EXTRA_C_FLAGS= -D_MT
!endif
I think you want "!if" -- this is false if the expression is 0, true
otherwise -- using
!ifdef is alway true since the item USE_CRT_DLL is defined no matter
what its value is
I have attached the console session run these commands / batch files
Thanks
Frank Esposito
On Mon, Nov 19, 2012 at 2:10 PM, Fabrice Popineau
<[email protected]> wrote:
>
>> > When trying to build v24.2 with visual c 7.1 the file cmdproxy.c
>> > fails to link due to --
>
>
> What is visual c 7.1 ? The Microsoft Windows SDK 7.1 ?
>
> What do you get with :
>
> C:\Source\XEmTeX\emacs\emacsw32\nt>cl
> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for
> 80x86
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> cl : Command line error D8003 : missing source filename
>
> C:\Source\XEmTeX\emacs\emacsw32\nt>link
> Microsoft (R) Incremental Linker Version 10.00.40219.01
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> usage: LINK [options] [files] [@commandfile]
>
>> >
>> > LINK : warning LNK4044: unrecognized option '/manifest'; ignored
>> > LINK : warning LNK4044: unrecognized option '/dynamicbase:no'; ignored
>
>
> Annoying that your linker does not grok these options. They are not that
> new.
>
>>
>> > cmdproxy.obj : error LNK2001: unresolved external symbol __pctype
>> > cmdproxy.obj : error LNK2001: unresolved external symbol ___mb_cur_max
>> > obj/i386/cmdproxy.exe : fatal error LNK1120: 2 unresolved externals
>> > NMAKE : fatal error U1077: 'link' : return code '0x460'
>> > Stop.
>
>
> Problem : msvcrt is missing. Check if USE_CRT_DLL=1 .
>
> Send a full log of the commands emitted.
>
> Regards,
>
> Fabrice
>
>>
>> >
>> > What library do I need to resolve these links
>>
>> Fabrice, could you please help out here? TIA.
>
>
<(fpe1001)o:\sandbox(0,0)>e:
<(fpe1001)e:\dev\emacs\emacs-24.2\lib-src(0,0)>cd ..
<(fpe1001)e:\dev\emacs\emacs-24.2(0,0)>cd nt
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.6030 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>echo This is visual studio 7.1 (.net
2003)
This is visual studio 7.1 (.net 2003)
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>echo c compiler
c compiler
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>cl
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.6030 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>echo This version of cl does not
support manifests
This version of cl does not support manifests
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>del *.BAK
Deleting E:\dev\emacs\emacs-24.2\nt\cmdproxy.bak
Deleting E:\dev\emacs\emacs-24.2\nt\makefile.bak
2 files deleted
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>pre-go.btm
call configure.bat --with-msvc --no-opt --enable-checking --ldflags -map
--without-png --without-jpeg --without-gif --without-tiff --without-xpm
Checking for 'cp'...
Checking for 'rm'...
Checking for libgnutls...
...gnutls.h not found, building without TLS support.
Generating makefiles
E:\dev\emacs\emacs-24.2\nt\config.nt => E:\dev\emacs\emacs-24.2\nt\config.tmp
1 file copied
Deleting E:\dev\emacs\emacs-24.2\nt\config.tmp
1 file deleted
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\nt\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>> E:\dev\emacs\emacs-24.2\nt\makefile
E:\dev\emacs\emacs-24.2\nt\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\nt\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\admin\unidata\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>>
E:\dev\emacs\emacs-24.2\admin\unidata\makefile
E:\dev\emacs\emacs-24.2\admin\unidata\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\admin\unidata\makefil
e
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\lib-src\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>>
E:\dev\emacs\emacs-24.2\lib-src\makefile
E:\dev\emacs\emacs-24.2\lib-src\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\lib-src\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\lib\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>> E:\dev\emacs\emacs-24.2\lib\makefile
E:\dev\emacs\emacs-24.2\lib\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\lib\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\src\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>> E:\dev\emacs\emacs-24.2\src\makefile
E:\dev\emacs\emacs-24.2\src\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\src\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\doc\emacs\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>>
E:\dev\emacs\emacs-24.2\doc\emacs\makefile
E:\dev\emacs\emacs-24.2\doc\emacs\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\doc\emacs\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\doc\misc\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>>
E:\dev\emacs\emacs-24.2\doc\misc\makefile
E:\dev\emacs\emacs-24.2\doc\misc\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\doc\misc\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\doc\lispref\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>>
E:\dev\emacs\emacs-24.2\doc\lispref\makefile
E:\dev\emacs\emacs-24.2\doc\lispref\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\doc\lispref\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\doc\lispintro\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>>
E:\dev\emacs\emacs-24.2\doc\lispintro\makefile
E:\dev\emacs\emacs-24.2\doc\lispintro\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\doc\lispintro\makefil
e
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\lisp\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>> E:\dev\emacs\emacs-24.2\lisp\makefile
E:\dev\emacs\emacs-24.2\lisp\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\lisp\makefile
3 files copied
E:\dev\emacs\emacs-24.2\nt\config.settings =>
E:\dev\emacs\emacs-24.2\leim\makefile
E:\dev\emacs\emacs-24.2\nt\nmake.defs =>> E:\dev\emacs\emacs-24.2\leim\makefile
E:\dev\emacs\emacs-24.2\leim\makefile.w32-in =>>
E:\dev\emacs\emacs-24.2\leim\makefile
3 files copied
Deleting E:\dev\emacs\emacs-24.2\nt\config.settings
1 file deleted
Emacs successfully configured.
Run %MAKECMD%' to build, then run nmake install' to install.
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>go.btm
nmake -a -f makefile
Microsoft (R) Program Maintenance Utility Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.
Using C:\JPSoft\TCMD14\TCC.EXE as shell.
mkdir obj
TCC: (Sys) Cannot create a file when that file already exists.
"E:\dev\emacs\emacs-24.2\nt\obj"
mkdir "obj/i386"
TCC: (Sys) Cannot create a file when that file already exists.
"E:\dev\emacs\emacs-24.2\nt\obj\i386"
echo obj/i386 > stamp_BLD
cl -I. -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Od -Gd -Zi -DEMACSDEBUG
-DENABLE_CHECKING -DXASSERTS
-Foobj/i386\ addpm.c
addpm.c
link -out:obj/i386/addpm.exe -nologo -manifest -dynamicbase:no -debug
-incremental:no -version
:3.10 -swaprun:cd -swaprun:net setargv.obj -debug -map obj/i386/addpm.obj
msvcrtd.lib oldnames.lib adv
api32.lib user32.lib ole32.lib uuid.lib shell32.lib
LINK : warning LNK4044: unrecognized option '/manifest'; ignored
LINK : warning LNK4044: unrecognized option '/dynamicbase:no'; ignored
setargv.obj : warning LNK4099: PDB 'libc.pdb' was not found with 'c:\program
files\microsoft visual stu
dio .net 2003\vc7\lib\setargv.obj' or at
'E:\dev\emacs\emacs-24.2\nt\obj\i386\libc.pdb'; linking object
as if no debug info
cl -I. -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Od -Gd -Zi -DEMACSDEBUG
-DENABLE_CHECKING -DXASSERTS
-Foobj/i386\ ddeclient.c
ddeclient.c
link -out:obj/i386/ddeclient.exe -nologo -manifest -dynamicbase:no
-debug -incremental:no -ver
sion:3.10 -swaprun:cd -swaprun:net setargv.obj -debug -map
obj/i386/ddeclient.obj msvcrtd.lib oldnames
.lib advapi32.lib user32.lib
LINK : warning LNK4044: unrecognized option '/manifest'; ignored
LINK : warning LNK4044: unrecognized option '/dynamicbase:no'; ignored
setargv.obj : warning LNK4099: PDB 'libc.pdb' was not found with 'c:\program
files\microsoft visual stu
dio .net 2003\vc7\lib\setargv.obj' or at
'E:\dev\emacs\emacs-24.2\nt\obj\i386\libc.pdb'; linking object
as if no debug info
rc -Foobj/i386/emacs.res emacs.rc
cl -I. -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Od -Gd -Zi -DEMACSDEBUG
-DENABLE_CHECKING -DXASSERTS
-Foobj/i386\ runemacs.c
runemacs.c
link -out:obj/i386/runemacs.exe -subsystem:windows -nologo -manifest
-dynamicbase:no -debug -i
ncremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj -debug -map
obj/i386/runemacs.obj obj/
i386/emacs.res msvcrtd.lib oldnames.lib advapi32.lib user32.lib
LINK : warning LNK4044: unrecognized option '/manifest'; ignored
LINK : warning LNK4044: unrecognized option '/dynamicbase:no'; ignored
setargv.obj : warning LNK4099: PDB 'libc.pdb' was not found with 'c:\program
files\microsoft visual stu
dio .net 2003\vc7\lib\setargv.obj' or at
'E:\dev\emacs\emacs-24.2\nt\obj\i386\libc.pdb'; linking object
as if no debug info
cl -I. -nologo -D_X86_=1 -c -Zl -Zp8 -W2 -Od -Gd -Zi -DEMACSDEBUG
-DENABLE_CHECKING -DXASSERTS
-Foobj/i386\ cmdproxy.c
cmdproxy.c
link -out:obj/i386/cmdproxy.exe -nologo -manifest -dynamicbase:no
-debug -incremental:no -vers
ion:3.10 -swaprun:cd -swaprun:net setargv.obj -debug -map obj/i386/cmdproxy.obj
msvcrtd.lib oldnames.l
ib user32.lib
LINK : warning LNK4044: unrecognized option '/manifest'; ignored
LINK : warning LNK4044: unrecognized option '/dynamicbase:no'; ignored
cmdproxy.obj : error LNK2001: unresolved external symbol __pctype
cmdproxy.obj : error LNK2001: unresolved external symbol ___mb_cur_max
obj/i386/cmdproxy.exe : fatal error LNK1120: 2 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,2)>cd ..
<(fpe1001)e:\dev\emacs\emacs-24.2(0,0)>cd nt
<(fpe1001)e:\dev\emacs\emacs-24.2\nt(0,0)>cd obj
<(fpe1001)e:\dev\emacs\emacs-24.2\nt\obj(0,0)>dir
Volume in drive E is Disk-2T Serial number is 2ca2:3009
Directory of E:\dev\emacs\emacs-24.2\nt\obj\*
11/19/2012 14:01 <DIR> .
11/19/2012 14:01 <DIR> ..
11/19/2012 14:35 <DIR> i386
0 bytes in 0 files and 3 dirs
1,014,911,639,552 bytes free
<(fpe1001)e:\dev\emacs\emacs-24.2\nt\obj(0,0)>cd i386
<(fpe1001)e:\dev\emacs\emacs-24.2\nt\obj\i386(0,0)>dir *.map
Volume in drive E is Disk-2T Serial number is 2ca2:3009
Directory of E:\dev\emacs\emacs-24.2\nt\obj\i386\*.map
11/19/2012 14:35 34,090 addpm.map
11/19/2012 14:35 0 cmdproxy.map
11/19/2012 14:35 9,554 ddeclient.map
11/19/2012 14:35 11,451 runemacs.map
55,095 bytes in 4 files and 0 dirs 61,440 bytes allocated
1,014,911,639,552 bytes free
<(fpe1001)e:\dev\emacs\emacs-24.2\nt\obj\i386(0,0)>echo -- library is here --
msvcrtd --
-- library is here -- msvcrtd --
<(fpe1001)e:\dev\emacs\emacs-24.2\nt\obj\i386(0,0)>list addpm.map
addpm.map % F1 Help %
Col 0 Line 119 25%
0002:00000060 __imp____p___initenv 00402060
msvcrtd:MSVCR71D.dll
0002:00000064 __imp___cexit 00402064
msvcrtd:MSVCR71D.dll
0002:00000068 __imp__sprintf 00402068
msvcrtd:MSVCR71D.dll
0002:0000006c __imp___XcptFilter 0040206c
msvcrtd:MSVCR71D.dll
0002:00000070 __imp___exit 00402070
msvcrtd:MSVCR71D.dll
0002:00000074 __imp___c_exit 00402074
msvcrtd:MSVCR71D.dll
0002:00000078 __iob 00402078
msvcrtd:MSVCR71D.dll
0002:00000078 __imp___iob 00402078
msvcrtd:MSVCR71D.dll
0002:0000007c __imp__strrchr 0040207c
msvcrtd:MSVCR71D.dll
0002:00000080 __imp__fprintf 00402080
msvcrtd:MSVCR71D.dll
0002:00000084 __imp__exit 00402084
msvcrtd:MSVCR71D.dll
0002:00000088 __imp__strcat 00402088
msvcrtd:MSVCR71D.dll
0002:0000008c __imp__strlen 0040208c
msvcrtd:MSVCR71D.dll
0002:00000090 __imp____set_app_type 00402090
msvcrtd:MSVCR71D.dll
0002:00000094 __imp___stricmp 00402094
msvcrtd:MSVCR71D.dll
0002:00000098 \177MSVCR71D_NULL_THUNK_DATA 00402098
msvcrtd:MSVCR71D.dll
0002:0000009c __imp__SHGetSpecialFolderPathA@16 0040209c
shell32:SHELL32.dll
0002:000000a0 \177SHELL32_NULL_THUNK_DATA 004020a0
shell32:SHELL32.dll
0002:000000a4 __imp__DdeDisconnect@4 004020a4 user32:USER32.dll
0002:000000a8 __imp__DdeClientTransaction@32 004020a8
user32:USER32.dll
0002:000000ac __imp__DdeFreeStringHandle@8 004020ac user32:USER32.dll
0002:000000b0 __imp__DdeUninitialize@4 004020b0 user32:USER32.dll
0002:000000b4 __imp__DdeInitializeA@16 004020b4 user32:USER32.dll
0002:000000b8 __imp__DdeCreateStringHandleA@12 004020b8
user32:USER32.dll
0002:000000bc __imp__DdeConnect@16 004020bc user32:USER32.dll
0002:000000c0 __imp__MessageBoxA@16 004020c0 user32:USER32.dll
0002:000000c4 \177USER32_NULL_THUNK_DATA 004020c4 user32:USER32.dll
0002:000000c8 __imp__CoCreateInstance@20 004020c8 ole32:ole32.dll
0002:000000cc __imp__CoUninitialize@0 004020cc ole32:ole32.dll
0002:000000d0 __imp__CoInitialize@4 004020d0 ole32:ole32.dll
0002:000000d4 \177ole32_NULL_THUNK_DATA 004020d4 ole32:ole32.dll
0002:0000012c _IID_IInitializeSpy 0040212c uuid:objidl_i.obj
0002:0000013c _IID_IProcessInitControl 0040213c uuid:objidl_i.obj
0002:0000014c _IID_IComThreadingInfo 0040214c uuid:objidl_i.obj
0002:0000015c _IID_ISurrogateService 0040215c uuid:objidl_i.obj
0002:0000016c _IID_IProcessLock 0040216c uuid:objidl_i.obj
0002:0000017c _IID_IObjContext 0040217c uuid:objidl_i.obj
0002:0000018c _IID_IContext 0040218c uuid:objidl_i.obj
0002:0000019c _IID_IEnumContextProps 0040219c uuid:objidl_i.obj
0002:000001ac _IID_IDummyHICONIncluder 004021ac uuid:objidl_i.obj
0002:000001bc _IID_IThumbnailExtractor 004021bc uuid:objidl_i.obj
0002:000001cc _IID_AsyncIPipeDouble 004021cc uuid:objidl_i.obj
0002:000001dc _IID_IPipeDouble 004021dc uuid:objidl_i.obj
0002:000001ec _IID_AsyncIPipeLong 004021ec uuid:objidl_i.obj
0002:000001fc _IID_IPipeLong 004021fc uuid:objidl_i.obj
0002:0000020c _IID_AsyncIPipeByte 0040220c uuid:objidl_i.obj
0002:0000021c _IID_IPipeByte 0040221c uuid:objidl_i.obj
0002:0000022c _IID_IAddrExclusionControl 0040222c uuid:objidl_i.obj
0002:0000023c _IID_IAddrTrackingControl 0040223c uuid:objidl_i.obj
0002:0000024c _IID_IForegroundTransfer 0040224c uuid:objidl_i.obj
0002:0000025c _IID_IUrlMon 0040225c uuid:objidl_i.obj
0002:0000026c _IID_IWaitMultiple 0040226c uuid:objidl_i.obj
0002:0000027c _IID_IReleaseMarshalBuffers 0040227c uuid:objidl_i.obj
0002:0000028c _IID_IRpcHelper 0040228c uuid:objidl_i.obj
0002:0000029c _IID_ICallFactory 0040229c uuid:objidl_i.obj
0002:000002ac _IID_IAsyncManager 004022ac uuid:objidl_i.obj
0002:000002bc _IID_ICancelMethodCalls 004022bc uuid:objidl_i.obj
0002:000002cc _IID_ISynchronizeMutex 004022cc uuid:objidl_i.obj
0002:000002dc _IID_ISynchronizeContainer 004022dc uuid:objidl_i.obj
0002:000002ec _IID_ISynchronizeEvent 004022ec uuid:objidl_i.obj
<(fpe1001)e:\dev\emacs\emacs-24.2\nt\obj\i386(0,0)>