www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Module or Dictionary corrupt

reply "Namespace" <rswhite4 googlemail.com> writes:
OPTLINK (R) for Win32  Release 8.00.13
Copyright (C) Digital Mars 1989-2010  All rights reserved.
http://www.digitalmars.com/ctg/optlink.html
Debug\Foo.obj Offset 00000H Record Type 0064
  Error 138: Module or Dictionary corrupt
Building Debug\Foo.exe failed!

That's what I get when I compile with-m64. What is wrong?
Nov 05 2013
parent reply "Jonathan M Davis" <jmdavisProg gmx.com> writes:
On Wednesday, November 06, 2013 00:22:13 Namespace wrote:
 OPTLINK (R) for Win32 Release 8.00.13
 Copyright (C) Digital Mars 1989-2010 All rights reserved.
 http://www.digitalmars.com/ctg/optlink.html
 Debug\Foo.obj Offset 00000H Record Type 0064
 Error 138: Module or Dictionary corrupt
 Building Debug\Foo.exe failed!
 
 That's what I get when I compile with-m64. What is wrong?
-m64 shouldn't even be using optlink. On Windows, 64-bit links with the Visual Studio linker, not optlink. I think that you may have to set up your sc.ini differently for that though, which would mean that you couldn't simply switch between -m32 and -m64 on Windows. But I don't know for sure, because I almost never build in Windows, and I have yet to mess around with 64-bit D on Windows. - Jonathan m Davis
Nov 05 2013
parent reply "Namespace" <rswhite4 googlemail.com> writes:
On Wednesday, 6 November 2013 at 01:04:10 UTC, Jonathan M Davis 
wrote:
 On Wednesday, November 06, 2013 00:22:13 Namespace wrote:
 OPTLINK (R) for Win32 Release 8.00.13
 Copyright (C) Digital Mars 1989-2010 All rights reserved.
 http://www.digitalmars.com/ctg/optlink.html
 Debug\Foo.obj Offset 00000H Record Type 0064
 Error 138: Module or Dictionary corrupt
 Building Debug\Foo.exe failed!
 
 That's what I get when I compile with-m64. What is wrong?
-m64 shouldn't even be using optlink. On Windows, 64-bit links with the Visual Studio linker, not optlink. I think that you may have to set up your sc.ini differently for that though, which would mean that you couldn't simply switch between -m32 and -m64 on Windows. But I don't know for sure, because I almost never build in Windows, and I have yet to mess around with 64-bit D on Windows. - Jonathan m Davis
Should I open a bug for this?
Nov 06 2013
parent reply "evilrat" <evilrat666 gmail.com> writes:
On Wednesday, 6 November 2013 at 10:13:07 UTC, Namespace wrote:
 Should I open a bug for this?
you should fix ur sc.ini first to use visual studio linker for x64 and optlink for x86, you can use dmd 2.064.2 installer now to do so automatically.
Nov 06 2013
parent reply "Namespace" <rswhite4 googlemail.com> writes:
On Wednesday, 6 November 2013 at 10:21:38 UTC, evilrat wrote:
 On Wednesday, 6 November 2013 at 10:13:07 UTC, Namespace wrote:
 Should I open a bug for this?
you should fix ur sc.ini first to use visual studio linker for x64 and optlink for x86, you can use dmd 2.064.2 installer now to do so automatically.
I only have a VS shell for VisualD. I assume that I need a regular version, e.g. C++ Express?
Nov 06 2013
parent reply "evilrat" <evilrat666 gmail.com> writes:
On Wednesday, 6 November 2013 at 10:32:01 UTC, Namespace wrote:
 On Wednesday, 6 November 2013 at 10:21:38 UTC, evilrat wrote:
 On Wednesday, 6 November 2013 at 10:13:07 UTC, Namespace wrote:
 Should I open a bug for this?
you should fix ur sc.ini first to use visual studio linker for x64 and optlink for x86, you can use dmd 2.064.2 installer now to do so automatically.
I only have a VS shell for VisualD. I assume that I need a regular version, e.g. C++ Express?
well, yes, and also windows sdk i think
Nov 06 2013
parent "Namespace" <rswhite4 googlemail.com> writes:
On Thursday, 7 November 2013 at 04:50:48 UTC, evilrat wrote:
 On Wednesday, 6 November 2013 at 10:32:01 UTC, Namespace wrote:
 On Wednesday, 6 November 2013 at 10:21:38 UTC, evilrat wrote:
 On Wednesday, 6 November 2013 at 10:13:07 UTC, Namespace 
 wrote:
 Should I open a bug for this?
you should fix ur sc.ini first to use visual studio linker for x64 and optlink for x86, you can use dmd 2.064.2 installer now to do so automatically.
I only have a VS shell for VisualD. I assume that I need a regular version, e.g. C++ Express?
well, yes, and also windows sdk i think
I tried it gain with -m64 with the new release and after installing VisualD v0.3.37 My sc.ini looks like that: ---- [Version] version=7.51 Build 020 ; environment for both 32/64 bit [Environment] DFLAGS="-I% P%\..\..\src\phobos" "-I% P%\..\..\src\druntime\import" ; optlink only reads from the Environment section so we need this redundancy ; from the Environment32 section (bugzilla 11302) LIB="% P%\..\lib" [Environment32] LIB="% P%\..\lib" LINKCMD=% P%\link.exe [Environment64] LIB="% P%\..\lib64" ; needed to avoid COMDAT folding (bugzilla 10664) DFLAGS=%DFLAGS% -L/OPT:NOICF ; default to 32-bit linker (can generate 64-bit code) that has a common path ; for VS2008, VS2010, VS2012, and VS2013. This will be overridden below if the ; installer detects VS. LINKCMD=%VCINSTALLDIR%\bin\link.exe ; ----------------------------------------------------------------------------- ; This enclosed section is specially crafted to be activated by the Windows ; installer when it detects the actual paths to VC and SDK installations so ; modify this in the default sc.ini within the dmd git repo with care. ; ; End users: You can fill in the path to VC and Windows SDK and uncomment out ; the appropriate LINKCMD to manually enable support yourself. ; ; Users using Visual Studio 2010 Express with SDK 7.0A: The installer cannot ; determine the path to the 64-bit compiler included with SDK 7.0A. It's ; recommended to install the Windows SDK 7.1A. Alternatively you can set ; LINKCMD as the path to link.exe SDK 7.0A installs. It would typically be: ; C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\link.exe ; Windows installer replaces the following lines with the actual paths ;VCINSTALLDIR= ;WindowsSdkDir= ; Windows installer uncomments the version detected ;VC2013 LINKCMD=%VCINSTALLDIR%\bin\x86_amd64\link.exe ;VC2012 LINKCMD=%VCINSTALLDIR%\bin\x86_amd64\link.exe ;VC2010 LINKCMD=%VCINSTALLDIR%\bin\amd64\link.exe ;VC2008 LINKCMD=%VCINSTALLDIR%\bin\amd64\link.exe ; needed with /DEBUG to find mspdb*.dll (only for VS2012 or VS2013) ;VC2013 PATH=%PATH%;%VCINSTALLDIR%\bin\x86_amd64;%VCINSTALLDIR%\..\Common7\IDE ;VC2012 PATH=%PATH%;%VCINSTALLDIR%\bin\x86_amd64;%VCINSTALLDIR%\..\Common7\IDE ; ---------------------------------------------------------------------------- ; Add the library subdirectories of all VC and Windows SDK versions so things ; just work for users using dmd from the VS 64-bit Command Prompt ; C Runtime libraries LIB=%LIB%;"%VCINSTALLDIR%\lib\amd64" ; Platform libraries (Windows SDK 8) LIB=%LIB%;"%WindowsSdkDir%\Lib\win8\um\x64" ; Platform libraries (Windows SDK 7 and 6) LIB=%LIB%;"%WindowsSdkDir%\Lib\x64" ---- and my output from VisualD is: ---- OPTLINK (R) for Win32 Release 8.00.13 Copyright (C) Digital Mars 1989-2010 All rights reserved. http://www.digitalmars.com/ctg/optlink.html Debug\Foo.obj Offset 00000H Record Type 0064 Error 138: Module or Dictionary corrupt ---- What must be changed?
Nov 08 2013