Opened 17 years ago

Closed 15 years ago

#481 closed Support Requests (wontfix)

Linker Problems with VC .NET 2003 / STLPort / Boost — at Version 4

Reported by: pluggy13 Owned by: René Rivera
Milestone: Component: Building Boost
Version: None Severity: Problem
Keywords: Cc:

Description (last modified by René Rivera)

Hi,

I have been trying for over 2 days to install Boost in
VC .NET 2003 alongside with STLPort , and despite
several different settings, I am always getting the
same linker errors.

First I tried using STLPort 4.6.1 with boost 1.32.
Here's a short, but complete description of what I have
tried:

First I downloaded and unzipped STLPort 4.61. Then I
ran the vcvars batch and installed STLPort with

nmake clean all -f vc71.mak
nmake install -f vc71.mak

Then I Installed boost 1.32 with

bjam "-sTOOLS=vc-7_1-stlport"
"-sSTLPORT_PATH=C:\...\stlport"
"-sSTLPORT_VERSIONS=4.6.1" "-sstlport-iostreams=on" install

This takes a while to complete, but seems to work fine
except for a few errors with the datetime package,
which I am not using anyway. I entered the boost /
stlport header and lib directories into Visual studio
and made sure they are on top of the other include
directories.

Then I created a dummy project with the following files:


stdafx.h:

--->>>>
#ifdef NDEBUG
# undef _STLP_DEBUG
#else
# define _STLP_DEBUG 1
#endif

#define BOOST_LIB_DIAGNOSTIC

#include <iostream>
#include <tchar.h>
<<<---


and the main.cpp:

--->>>>
#include "stdafx.h"

#include <boost/filesystem/convenience.hpp>


#include <vector>
using namespace _STL;

int _tmain(int argc, _TCHAR* argv)
{
//forcing native mode in boost paths just to make sure
that boost::filesystem has to be linked successfully
boost::filesystem::path::default_name_check(boost::filesystem::native);
vector<int> test;
test.push_back(1);
vector<int>::iterator Iter=test.begin();
Iter++;
int testint=*Iter; // iterator overrun error just to
see if the debug mode is working nicely
return 0;
}
<<<---

When I try to compile it, it fails with the following
liker errors:

--->>>>
Compiling...
stlport-boost-test.cpp
Linking to lib file:
libboost_filesystem-vc71-mt-sgdp-1_32.lib
Linking...
stlport-boost-test.obj : error LNK2019: unresolved
external symbol "public: static void __cdecl
boost::filesystem::path::default_name_check(bool
(__cdecl*)(class _STL::basic_string<char,class
_STL::char_traits<char>,class _STL::allocator<char> >
const &))"
(?default_name_check@path@filesystem@boost@@SAXP6A_NABV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@@Z@Z)
referenced in function _main
stlport-boost-test.obj : error LNK2019: unresolved
external symbol "bool __cdecl
boost::filesystem::native(class
_STL::basic_string<char,class
_STL::char_traits<char>,class _STL::allocator<char> >
const &)"
(?native@filesystem@boost@@YA_NABV?$basic_string@DV?$char_traits@D@_STL@@V?$allocator@D@2@@_STL@@@Z)
referenced in function _main
Debug/stlport-boost-test.exe : fatal error LNK1120: 2
unresolved externals

Build log was saved at "file://e:\documents and
settings\Wunibald Wunderlich\My Documents\Visual Studio
Projects\Finity Engine VS
2003\stlport-boost-test\Debug\BuildLog.htm"
stlport-boost-test - 3 error(s), 0 warning(s)
<<<---

It is obvious from the compiler output that
libboost_filesystem-vc71-mt-sgdp-1_32.lib was linked,
yet the compiler complains about unresolved symbols.

When I comment out the line related to
boost::filesystem from tmain(), it works perfectly. But
I need boost::filesystem and quite a few other
libraries for my real projects, so this is not an
option. Also, I have no problem linking to boost when
not using stlport, but I'd really like to take
advantage of the neat debuging mode built into stlport.

Someone from the STLPort forums suggested that I might
try the latest CVS versions for boost and STLPort, so I
did this yesterday (14th of Sept. 2005). I made sure
that what I downloaded from CVS was indeed STLPort 5.0
/ Boost 1.33,  I recompiled everything and changed the
headers path to the new version, but the problem stayed
absolutely the same. 

I am really clueless on how to proceed. I have also
tried posting to the boost and stlport forums, but
nobody seemed to be able to help. Any help would be
immmensely appreciated. Thanks! 

Change History (4)

comment:1 by John Maddock, 17 years ago

Logged In: YES 
user_id=14804

The command line bjam "-sTOOLS=vc-7_1-stlport"
"-sSTLPORT_PATH=C:\...\stlport"
"-sSTLPORT_VERSIONS=4.6.1" "-sstlport-iostreams=on" install
is wrong, should at least be:

bjam "-sTOOLS=vc-7_1-stlport"
"-sSTLPORT_PATH=C:\...\stlport"
"-sSTLPORT_VERSIONS=4.6.1" -sBUILD="<stlport-iostreams>on"
install

I'd recoment that you add the -d2 option to the command line
as well to make sure that the command lines produced are
correct.

comment:2 by pluggy13, 17 years ago

Logged In: YES 
user_id=1280877

Thanks for your reply! I tried building boost again with 

bjam "-sTOOLS=vc-7_1-stlport"
"-sSTLPORT_PATH=C:\Programme\Microsoft Visual Studio .NET
2003\add-ons\stlport" "-sSTLPORT_VERSIONS=4.6.1"
-sBUILD="<stlport-iostreams>on" -d2 install

But again the result was absolutely the same. Still the same
linker errors. I also tried again with the CVS versions of
boost and STLPort, and again no luck...

comment:3 by Daryle Walker, 15 years ago

Component: NoneBuilding Boost
Severity: Problem

comment:4 by René Rivera, 15 years ago

Description: modified (diff)
Resolution: Nonewontfix
Status: assignedclosed

I can't see this being relevant any longer.

Note: See TracTickets for help on using tickets.