|
From: | James Vanderhyde |
Subject: | RE: [Openexr-devel] Building Visual C++ 2005 for x64 platform |
Date: | Wed, 21 Nov 2007 11:06:45 -0500 |
All right, I figured out the problem. The
problem is that the format of the .map file changes between linked for 32-bit
and linked for 64-bit, and the createDLL.cpp program parses the .map file. The
format change is this: every symbol in the .map file that has 1, 2, or 3
initial underscore characters has 0, 1, or 2 underscores (respectively) in the
64-bit .map file. Several places in createDLL.cpp, symbols with two initial
underscores are skipped. I changed this to one initial underscore and
everything links fine in 64-bit. James From:
address@hidden
[mailto:address@hidden On Behalf Of I am trying to build a 64-bit dll of
OpenEXR for 64-bit Windows. I’m using Visual Studio 2005 (VC8). I started
by downloading the math library (IlmBase) and trying to build the IlmBase
solution. I created a configuration for the x64 platform. I had to make a few
changes to get the “createDLL” project to compile. I changed the
Output Directory and Intermediate Directory to match what the Win32 configuration
had. Since the project uses a lot of hard-coded relative paths, these needed to
be fixed from Visual Studio’s defaults. This createDLL program runs the
linker for the rest of the projects, and it has one line of code that controls
the command-line options for the linker. I changed this line to be
“X64” instead of “X86.” At this point the “Half”
project compiles and links successfully, but when I try to build the
“Iex” project I get several linker errors, such as the following: Iex.exp : error LNK2001:
unresolved external symbol address@hidden@@ All the .lib, .def, and .obj files
seem to be OK, so I can’t figure out what the problem is. Does anyone have any tips for me?
Thanks. James |
[Prev in Thread] | Current Thread | [Next in Thread] |