Unsolved OSG integration with QT...Trouble linking libraries.
-
@SGaist Can you explain what you mean more?
I checked all the include headers and for example Matrixd is present in the include folder and should be part of the osg141-osg.lib -
With Visual Studio, if you have a shared library and you want to be able to use a class/method from another application/library, you have to export it properly.
You can see more details about that here.
-
@SGaist it was to my understanding I was building OSG as a static lib.
I am able to build and execute the application using CMakelists, but I'm trying to convert it to a .pro file for experimental reason. -
Ok, then are you linking them in the correct order ?
-
This post is deleted! -
@SGaist I would like to think so. I was linking them the way i commented above but that was wrong so i went and changed it. But no results. same errors
LIBS += -L"C:/Packages/VC14/osg-3.5.1-qtcreator/lib" -losg141-osg
-lot20-OpenThreads
-losg141-osgAnimation
-losg141-osgDB
-losg141-osgFX
-losg141-osgGA
-losg141-osgManipulator
-losg141-osgParticle
-losg141-osgPresentation
-losg141-osgQt
-losg141-osgShadow
-losg141-osgSim
-losg141-osgTerrain
-losg141-osgText
-losg141-osgUI
-losg141-osgUtil
-losg141-osgViewer
-losg141-osgVolume
-losg141-osgWidget -
And the exact same application builds properly with cmake ?
-
@SGaist
Yes. With CMake I can run it just fine.
Could it be because I have not linked the plugins? -
Which plugins are you referring to ?
-
First is the page of lib folder
2nd is the plugins.Fixing the order of the libraries got rid of the remaining LNK2001 errors i had.
Now all I have left is 7 LNK2019 errors similar to the original post -
@SGaist i thought i attached the images but i hadnt seen they arent visible. I will link them first hting in the morning. I appreciate the input greatly.
Thank you -
The upload feature is currently broken so you have to use an image sharing site in between.
-
@SGaist [url=https://postimg.org/image/a2npfn1en/][img]https://s3.postimg.org/a2npfn1en/osglib.png[/img][/url]
[url=https://postimg.org/image/w341w9k2n/][img]https://s3.postimg.org/w341w9k2n/plugins.png[/img][/url]
[url=https://postimage.org/]image hosting over 5mb[/url]
there are more plugins but the ones I use are
osgdb_osg
osgdb_serializers_osg
osgdb_ply
osgdb_3ds
osgdb_stl
osgdb_obj)
osgdb_bmp
osgdb_bvh
osgdb_cfg
osgdb_dxf
osgdb_glsl
osgdb_tga
osgdb_png
osgdb_jpeg
osgdb_tiff
osgdb_gif
osgdb_freetype -
-
Can you compare the link line you have between your cmake project and your qmake project ?
-
@SGaist I went an added all the plugins in the order the CMakelist does it and it didnt fix any errors. The problems seem. THe remaining errors have to do with
osg::Matrixd
osg::MatrixfosgVolume::Volume
osgVolume::Layer
osg::Group
osg::BoundingSphereImplI was able to eliminate another error by simply linking the libraries before certain statements in the .pro file but im still at 6 errors
I had 2 additional errors previously at
osg::Sphere
osg::Vec3f
but I was able to get this remove by simply moving my LIBS statement higher up in the .pro.
What i dont understand is that even though im using a .pri file and including in every subproject, unless i directly add the libraries to the .pro file more errors persist -
Check the order of the libraries you are linking, when building with static libraries it is important.
-
I have. The order is identical to the CMakeList.
What im noticing though is that depending on where i call the LIBS i get more LNK2019 errors.What is the ideal way to import Libraries on a high level thus that the subproject inherit them.
I have included the OSG libs in every subproject and in my .pri file that I am currently adding to every project.
-
isnt a .pri file just an extension of a .pro ?
my first statement in every .pro file is including the .pri which then has the dependecies and includepaths/depedentpath and libs set up.
But I get less LNK2019 errors when i directly go and add the LIBS to the .pro in every subproject.If what im saying is unclear. Ill try another explanation.
in my 5 subprojects i copy pasted the OSG LIBS in the right order. Which minimized my LNK2019 errors. At the same time I include a .pri file that calls OSG LIBS anyway. With that set up I received 6 LNK2019 errors.
IF i remove the LIBS call in every .pro, and just call it in my .pri file. I receive 26 Lnk2019 errors -
No, a .pri file follows exactly the same patterns as a .pro file. The difference is purely that .pri files are meant to be included in other .pro/.pri files while .pro files represent the project itself.
However, if you have other
LIBS
statement in your .pro files then you should include your .pri file after that. The point where you include your .pri files depend on what you are doing in that .pri file. e.g. if you modify theTARGET
variable then you should include that .pri file after you have setupTARGET
in your .pro file.