Advertisement

Large Project (e.g PortaLib3D) structure...

Started by January 28, 2001 11:01 AM
1 comment, last by Ozz 23 years, 9 months ago
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
    
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
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
Advertisement
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:

    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