Compilation issue (boost error messages)

Forum for posting problems using QxOrm library

Compilation issue (boost error messages)

Postby Gundy » Tue Feb 08, 2011 5:54 pm

Hello,

I am working on a dll project that will probably use QxOrm to save some data in a database.
Qt.4.7.0
boost.1.42.0
Visual C++ 2010

The data are manipulated using this code :
(I don't quote all the project, I don't think it is necessary)

ObjectPrecompiled.h
Code: Select all
#ifndef _Object_Precompiled_h_
#define _Object_Precompiled_h_

#include <QxOrm.h>
#include "ObjectDecl.h"

#endif // _Object_Precompiled_h_


ObjectExport.h
Code: Select all
#ifndef _Object_Decl_h_
#define _Object_Decl_h_


#ifndef IMP_EXP_OBJECT
  #ifdef WIN32
    #ifdef _OBJECT
      #define IMP_EXP_OBJECT __declspec(dllexport)
    #else
      #define IMP_EXP_OBJECT __declspec(dllimport)
    #endif  //_OBJECT
  #endif // WIN32
#endif // _OBJECT

#ifdef _OBJECT
   #define QX_REGISTER_HPP_OBJECT QX_REGISTER_HPP_EXPORT_DLL
   #define QX_REGISTER_CPP_OBJECT QX_REGISTER_CPP_EXPORT_DLL
#else
   #define QX_REGISTER_HPP_OBJECT QX_REGISTER_HPP_IMPORT_DLL
   #define QX_REGISTER_CPP_OBJECT QX_REGISTER_CPP_IMPORT_DLL
#endif

#endif // _Object_Decl_h_


ObjectCharacteristicValue.h
Code: Select all
#ifndef _OBJECT_CHARACTERISTIC_VALUE_h_
#define _OBJECT_CHARACTERISTIC_VALUE_h_

#include <QDateTime>
#include <QObject>

class IMP_EXP_OBJECT ObjectCharacteristicValue : public QObject{
   
   Q_OBJECT
      Q_PROPERTY( int mId READ GetId WRITE SetId )

public:
    ObjectCharacteristicValue();
    ~ObjectCharacteristicValue();

   // Q_PROPERTY accessors
   int GetId() const { return mId ; }
   void SetId( int aId ) { mId = aId ; }

protected:
   int mId ;
};

#endif // _OBJECT_CHARACTERISTIC_VALUE_h_


ObjectCharacteristicValue.cpp
Code: Select all
#include "ObjectPrecompiled.h"
#include "ObjectCharacteristicValue.h"

#include <QxMemLeak.h>


ObjectCharacteristicValue::ObjectCharacteristicValue()
{
}

ObjectCharacteristicValue::~ObjectCharacteristicValue()
{
}



The full project compils well without QxOrm stuff.
But as soon as I had QxOrm include, I get this list of error messages when compiling :

Code: Select all
D:\Boost\Boost.1.42.0\boost/archive/impl/archive_serializer_map.ipp(45) : error C2491: 'boost::archive::detail::archive_serializer_map<Archive>::insert'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/archive_serializer_map.ipp(57) : error C2491: 'boost::archive::detail::archive_serializer_map<Archive>::erase'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/archive_serializer_map.ipp(67) : error C2491: 'boost::archive::detail::archive_serializer_map<Archive>::find'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oprimitive.ipp(59) : error C2491: 'boost::archive::basic_binary_oprimitive<Archive,Elem,Tr>::init'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oprimitive.ipp(68) : error C2491: 'boost::archive::basic_binary_oprimitive<Archive,Elem,Tr>::save'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oprimitive.ipp(77) : error C2491: 'boost::archive::basic_binary_oprimitive<Archive,Elem,Tr>::save'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oprimitive.ipp(87) : error C2491: 'boost::archive::basic_binary_oprimitive<Archive,Elem,Tr>::save'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oprimitive.ipp(97) : error C2491: 'boost::archive::basic_binary_oprimitive<Archive,Elem,Tr>::save'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oprimitive.ipp(121) : error C2491: 'boost::archive::basic_binary_oprimitive<Archive,Elem,Tr>::basic_binary_oprimitive'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oprimitive.ipp(161) : error C2491: 'boost::archive::basic_binary_oprimitive<Archive,Elem,Tr>::~basic_binary_oprimitive'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iprimitive.ipp(89) : error C2491: 'boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::init'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iprimitive.ipp(99) : error C2491: 'boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::load'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iprimitive.ipp(115) : error C2491: 'boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::load'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iprimitive.ipp(126) : error C2491: 'boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::load'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iprimitive.ipp(143) : error C2491: 'boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::load'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iprimitive.ipp(166) : error C2491: 'boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::basic_binary_iprimitive'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iprimitive.ipp(206) : error C2491: 'boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::~basic_binary_iprimitive'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_oarchive.ipp(43) : error C2491: 'boost::archive::basic_binary_oarchive<Archive>::init'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iarchive.ipp(44) : error C2491: 'boost::archive::basic_binary_iarchive<Archive>::load_override'ÿ: d‚finition de fonction dllimport non autoris‚e
D:\Boost\Boost.1.42.0\boost/archive/impl/basic_binary_iarchive.ipp(76) : error C2491: 'boost::archive::basic_binary_iarchive<Archive>::init'ÿ: d‚finition de fonction dllimport non autoris‚e


I can't find what piece of macro is mistaken or missing...
Is this a problem that occurs to someone else?
Gundy
 

Re: Compilation issue (boost error messages)

Postby QxOrm admin » Tue Feb 08, 2011 7:59 pm

Hi,

You are working on a dll project : verify that your boost libraries (and Qt libraries) are builded in shared mode instead of static mode (you must have a *.dll and *.lib files for each module in your boost package).

Have you tested all samples in your ./QxOrm/test/ directory ?
I strongly recommend to build and execute all tests in this directory before using QxOrm in your own project.
If all tests run without problem, so your installation of boost, Qt and QxOrm is OK and you can start your project.
Moreover, you have a sample in this directory with dll project : see ./test/dll1/, ./test/dll2/ and ./test/exe/ (or click on ./test/test.sln VS2010 solution file)...
QxOrm admin
 

Re: Compilation issue (boost error messages)

Postby Guest » Wed Feb 09, 2011 8:17 am

Hello!

Thanks for your answer.
I made some verification, and I saw that they were a "/D BOOST_ALL_DYN_LINK" option in my compiler...
If I remove this option, and if a link my project with boost_serialization-vc100-mt-gd-1_42.lib, compilation is ok.

Hope it helps.

But you are right, I will build and execute all tests so that I could see if my environment has other hidden traps like this ;)
Guest
 


Return to QxOrm - Help

Who is online

Users browsing this forum: No registered users and 7 guests