digitalmars.D - How do I link outside /dmd/src/phobos?
- news.digitalmars.com (137/137) Jul 02 2004 Hi, I'm having trouble linking files outside the /dmd/src/phobos directo...
- Walter (2/2) Jul 02 2004 Look in \dm\bin and see if there's an sc.ini, that will override the LIB
- news.digitalmars.com (28/30) Jul 02 2004 Good idea. However, I checked and I haven't done anything to the file -...
Hi, I'm having trouble linking files outside the /dmd/src/phobos directory.
Any ideas on what's going wrong?
1. I have a Hello World application named "dtest.d".
2. Compiling it in "c:/dmd/src/phobos/dtest" works, and links to produce a
valid EXE.
3. Compiling the exact same file in "d:/projects/dtest" works, but has link
warnings, and produces a corrupt EXE.
DM and DMD are installed in "c:/dm" and "c:/dmd" respectively. My LIB
environment variable is "c:\dmd\lib;c:\dm\lib". I'm compiling on Win32 with
DMD 0.86.
I'm rather stuck. I'd love any help anyone can offer. I've attached output
to the end of this message.
-david
--------- Success Case: Compiling in
c:/dmd/src/phobos/dtest ------------------
C:\dmd\src\phobos\dtest>dmd dtest.d
c:\dmd\bin\..\..\dm\bin\link.exe dtest,,,user32+kernel32/noi;
C:\dmd\src\phobos\dtest>dir
Volume in drive C is APP DRIVE
Volume Serial Number is 9CDC-919A
Directory of C:\dmd\src\phobos\dtest
07/02/2004 10:01 PM <DIR> .
07/02/2004 10:01 PM <DIR> ..
07/02/2004 10:00 PM 94 dtest.d
07/02/2004 10:02 PM 383 dtest.obj
07/02/2004 10:02 PM 2,390 dtest.map
07/02/2004 10:02 PM 68,124 dtest.exe
4 File(s) 70,991 bytes
2 Dir(s) 579,637,248 bytes free
C:\dmd\src\phobos\dtest>dtest
Hello!
C:\dmd\src\phobos\dtest>
------------- Failure Case: Compiling in d:/projects/dtest -------------
D:\Projects\dtest>dmd dtest.d
c:\dmd\bin\..\..\dm\bin\link.exe dtest,,,user32+kernel32/noi;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
user32.lib
Warning 2: File Not Found user32.lib
kernel32.lib
Warning 2: File Not Found kernel32.lib
SNN.lib
Warning 2: File Not Found SNN.lib
OPTLINK : Warning 23: No Stack
dtest.obj(dtest)
Error 42: Symbol Undefined __acrtused_con
c:\dmd\bin\..\lib\phobos.lib(dmain2)
Error 42: Symbol Undefined ___alloca
c:\dmd\bin\..\lib\phobos.lib(dmain2)
Error 42: Symbol Undefined __except_list
c:\dmd\bin\..\lib\phobos.lib(dmain2)
Error 42: Symbol Undefined _printf
dtest.obj(dtest)
Error 42: Symbol Undefined _puts
c:\dmd\bin\..\lib\phobos.lib(dmain2)
Error 42: Symbol Undefined _strlen
c:\dmd\bin\..\lib\phobos.lib(deh)
Error 42: Symbol Undefined __local_except_handler
c:\dmd\bin\..\lib\phobos.lib(deh)
Error 42: Symbol Undefined _RaiseException 16
c:\dmd\bin\..\lib\phobos.lib(deh)
Error 42: Symbol Undefined __global_unwind
c:\dmd\bin\..\lib\phobos.lib(gc)
Error 42: Symbol Undefined _malloc
c:\dmd\bin\..\lib\phobos.lib(gc)
Error 42: Symbol Undefined _calloc
c:\dmd\bin\..\lib\phobos.lib(gc)
Error 42: Symbol Undefined _memset
c:\dmd\bin\..\lib\phobos.lib(monitor)
Error 42: Symbol Undefined _free
c:\dmd\bin\..\lib\phobos.lib(monitor)
Error 42: Symbol Undefined _DeleteCriticalSection 4
c:\dmd\bin\..\lib\phobos.lib(monitor)
Error 42: Symbol Undefined _LeaveCriticalSection 4
c:\dmd\bin\..\lib\phobos.lib(monitor)
Error 42: Symbol Undefined __assert
c:\dmd\bin\..\lib\phobos.lib(monitor)
Error 42: Symbol Undefined _EnterCriticalSection 4
c:\dmd\bin\..\lib\phobos.lib(monitor)
Error 42: Symbol Undefined _InitializeCriticalSection 4
c:\dmd\bin\..\lib\phobos.lib(gcx)
Error 42: Symbol Undefined _memcpy
c:\dmd\bin\..\lib\phobos.lib(gcx)
Error 42: Symbol Undefined _memmove
c:\dmd\bin\..\lib\phobos.lib(gcx)
Error 42: Symbol Undefined _realloc
c:\dmd\bin\..\lib\phobos.lib(gcx)
Error 42: Symbol Undefined _GetThreadContext 8
c:\dmd\bin\..\lib\phobos.lib(win32)
Error 42: Symbol Undefined __end
c:\dmd\bin\..\lib\phobos.lib(win32)
Error 42: Symbol Undefined __xi_a
c:\dmd\bin\..\lib\phobos.lib(win32)
Error 42: Symbol Undefined _VirtualFree 12
c:\dmd\bin\..\lib\phobos.lib(win32)
Error 42: Symbol Undefined _VirtualAlloc 16
c:\dmd\bin\..\lib\phobos.lib(memset)
Error 42: Symbol Undefined __fltused
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined __beginthreadex
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _WaitForSingleObject 8
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _SetThreadPriority 8
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _GetCurrentThreadId 0
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _SuspendThread 4
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _ResumeThread 4
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _GetCurrentThread 0
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _GetCurrentProcess 0
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _DuplicateHandle 28
c:\dmd\bin\..\lib\phobos.lib(thread)
Error 42: Symbol Undefined _CloseHandle 4
c:\dmd\bin\..\lib\phobos.lib(string)
Error 42: Symbol Undefined __ULDIV
OPTLINK : Warning 134: No Start Address
--- errorlevel 38
D:\Projects\dtest>dir
Volume in drive D is DATA DRIVE
Volume Serial Number is 151C-1D09
Directory of D:\Projects\dtest
07/02/2004 09:59 PM <DIR> .
07/02/2004 09:59 PM <DIR> ..
07/02/2004 10:00 PM 94 dtest.d
07/02/2004 10:01 PM 383 dtest.obj
07/02/2004 10:01 PM 4,380 dtest.map
07/02/2004 10:01 PM 21,844 dtest.exe
4 File(s) 26,701 bytes
2 Dir(s) 859,357,184 bytes free
D:\Projects\dtest>set LIB
lib=c:\dmd\lib;c:\dm\lib
D:\Projects\dtest>
Jul 02 2004
Look in \dm\bin and see if there's an sc.ini, that will override the LIB environment variable settings. Also look for \dmd\bin\sc.ini.
Jul 02 2004
Good idea. However, I checked and I haven't done anything to the file -- it's still in its original state. Here's its contents: ----- Original: c:/dmd/bin/sc.ini ----------- [Version] version=7.51 Build 020 [Environment] LIB="% P%\..\lib";\dm\lib DFLAGS="-I% P%\..\src\phobos" LINKCMD=% P%\..\..\dm\bin\link.exe ----------------------------------- I think the % P% is the path of "dmd.exe", which translates to "c:/dmd/bin/dmd.exe". Thus after translation, I think it should be: LIB=c:/dmd/bin/../lib;dm/lib OH! Wow, there it is. The DMD/lib path is translating fine, but the DM/lib path is failing because it's mapping to the D: drive (where my source file is) instead of the C: drive. I've changed SC.INI as follows: ------ New: c:/dmd/sc.ini ---------- [Version] version=7.51 Build 020 [Environment] LIB="% P%\..\lib";c:\dm\lib DFLAGS="-I% P%\..\src\phobos" LINKCMD=% P%\..\..\dm\bin\link.exe ---------------------------------- And that did the trick. Thanks for the suggestion! -david "Walter" <newshound digitalmars.com> wrote in message news:cc5ctj$1qen$1 digitaldaemon.com...Look in \dm\bin and see if there's an sc.ini, that will override the LIB environment variable settings. Also look for \dmd\bin\sc.ini.
Jul 02 2004








"news.digitalmars.com" <dbarrett quinthar.com>