Compiling...
lrTest.cpp
d:\programming\liquidrender\source\lrcore\lrcore.h(19) : warning C4081: expected 'newline'; found ';'
Linking...
Creating library ../../Binaries/lrCore/Debug/lrCore.lib and object ../../Binaries/lrCore/Debug/lrCore.exp
LINK : error : Internal error during IdentifyAssignedOrdinals
ExceptionCode = C0000005
ExceptionFlags = 00000000
ExceptionAddress = 0040C768
NumberParameters = 00000002
ExceptionInformation[ 0] = 00000001
ExceptionInformation[ 1] = 00A30000
CONTEXT:
Eax = 00000008 Esp = 0012EEC4
Ebx = 002F9D58 Ebp = 00000008
Ecx = 00000002 Esi = 00402AB4
Edx = 00000008 Edi = 00A30000
Eip = 0040C768 EFlags = 00010202
SegCs = 0000001B SegDs = 00000023
SegSs = 00000023 SegEs = 00000023
SegFs = 00000038 SegGs = 00000000
Dr0 = 0012EEC4 Dr3 = 002F9D58
Dr1 = 00000008 Dr6 = 00000002
Dr2 = 00000000 Dr7 = 51445D70
LINK : fatal error LNK1141: failure during build of exports file
Error executing link.exe.
Thanks in advance,
Ozz.
Edited by - Ozz on January 28, 2001 12:04:33 PM
Large Project (e.g PortaLib3D) structure...
Does anyone have tips on setting up large projects involving multiple '.dlls' and '.libs' along the lines of PortaLib3D. What I mean is, the physical layout of directories. I have no problems from a programming POV but when I try to structure my projects in 'Binary', 'Source' and 'Library' directories I get all kinds of link errors (Along the lines of
Well, as far as directory layout goes, I typically have a base directory that contains a blank workspace. Then, when I add projects to the workspace, they get created inside the workspace directory:
G:\
.|--->Liquid Interactive
...|--->Fusion // main workspace dirtectory
.....|--->bin // manually created, all LIB and DLL files here
.....|--->core // static library project
.....|--->spatial // scene graph & BSP static lib
.....|--->math // math-related static lib
.....|--->graphics// tri-stripifier, interfaces to graphics API
.....|--->framework
.......|--->gr_opengl // opengl renderer, dll
.......|--->gl_d3d // Direct3D renderer, dll
etc. Then, I just setup each of those sub projects to output to the bin directory. I have the path G:\Liquid Interactive\Fusion added to my include search path. Then I''ll usually have a file in each project called "ext_libs.cpp" which contains #pragma s to import the libraries I need:
FILE: g:\Liquid Interactive\Fusion\spatial\ext_libs.cpp
#if defined(_DEBUG) || defined(DEBUG)
#pragma comment (lib,"..\\bin\\core_dbg.lib")
#pragma comment (lib,"..\\bin\\math_dbg.lib")
#else
#pragma comment (lib,"..\\bin\\core.lib")
#pragma comment (lib,"..\\bin\\math.lib")
#endif // defined(_DEBUG) || defined(DEBUG)
As far as that big''ol mess of errors, I have never seen that, but I would (a) fix the warning (you probably have a #pragma message () or something similar and you put a semicolon after it, and you shouldn''t) and then (b) do a clean and rebuild all. That *might* work.
Hope this helps,
Liquid
G:\
.|--->Liquid Interactive
...|--->Fusion // main workspace dirtectory
.....|--->bin // manually created, all LIB and DLL files here
.....|--->core // static library project
.....|--->spatial // scene graph & BSP static lib
.....|--->math // math-related static lib
.....|--->graphics// tri-stripifier, interfaces to graphics API
.....|--->framework
.......|--->gr_opengl // opengl renderer, dll
.......|--->gl_d3d // Direct3D renderer, dll
etc. Then, I just setup each of those sub projects to output to the bin directory. I have the path G:\Liquid Interactive\Fusion added to my include search path. Then I''ll usually have a file in each project called "ext_libs.cpp" which contains #pragma s to import the libraries I need:
FILE: g:\Liquid Interactive\Fusion\spatial\ext_libs.cpp
#if defined(_DEBUG) || defined(DEBUG)
#pragma comment (lib,"..\\bin\\core_dbg.lib")
#pragma comment (lib,"..\\bin\\math_dbg.lib")
#else
#pragma comment (lib,"..\\bin\\core.lib")
#pragma comment (lib,"..\\bin\\math.lib")
#endif // defined(_DEBUG) || defined(DEBUG)
As far as that big''ol mess of errors, I have never seen that, but I would (a) fix the warning (you probably have a #pragma message () or something similar and you put a semicolon after it, and you shouldn''t) and then (b) do a clean and rebuild all. That *might* work.
Hope this helps,
Liquid
It seems I`ve sorted out the errors, I needed to add post-build copy commands to move the libraries. I now have a structure like this:
I`m using Visual C++ 6.0. When Core.dsp (Part of LiquidRender workspace) is built a copy of 'core.dll' is put in 'Binaries' and a copy of 'core.lib' is put in 'Libraries'.
The Test-App (Also part of the LiquidRender Workspace) uses 'Core.dsp' as a dependency, and includes 'core.h'. All the '#pragma comment(lib, ....)'s to link the 'core.lib' work fine but when I run Test-App, it reports that it cannot find 'core.dll'. It also reports that it it looking for the DLL in the Test-App directory.
How do I force Test-App to look for the .dll in the 'Binaries' directory?
Thanks for your time and help,
Ozz.
Edited by - Ozz on January 28, 2001 2:56:50 PM
o-LiquidRender // Main workspace directory | o-Binaries // All DLL Files | o-Libraries // All LIB Files | o-Source || |o-Core // The Core Project Directory + 'core.h' | | | o-Debug // core.dll and core.lib | o-Test-App // The Test Application Directory
I`m using Visual C++ 6.0. When Core.dsp (Part of LiquidRender workspace) is built a copy of 'core.dll' is put in 'Binaries' and a copy of 'core.lib' is put in 'Libraries'.
The Test-App (Also part of the LiquidRender Workspace) uses 'Core.dsp' as a dependency, and includes 'core.h'. All the '#pragma comment(lib, ....)'s to link the 'core.lib' work fine but when I run Test-App, it reports that it cannot find 'core.dll'. It also reports that it it looking for the DLL in the Test-App directory.
How do I force Test-App to look for the .dll in the 'Binaries' directory?
Thanks for your time and help,
Ozz.
Edited by - Ozz on January 28, 2001 2:56:50 PM
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement