Cross platform compilation

S

saneman

I have some code that compiles fine with g++ (gnu c++ compiler for linux):


#include <math_types.h>
int main() {
//graphics::MyMathTypes::vector3_type v1;
typedef graphics::MyMathTypes math_types;
typedef math_types::matrix4x4_type matrix4x4_type;
typedef math_types::vector3_type vector3_type;
typedef math_types::real_type real_type;
matrix4x4_type m1;
vector3_type v1;
vector3_type v2;
Dot(v1, v2);
return 0;
}


But when I try to compile the same code on windows XP with visual studio
2008 I get:


1>test.obj : error LNK2019: unresolved external symbol "public: virtual
__thiscall Matrix<float,4,4>::~Matrix<float,4,4>(void)"
(??1?$Matrix@M$03$03@@UAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "public: virtual
__thiscall ColumnVector<float,3>::~ColumnVector<float,3>(void)"
(??1?$ColumnVector@M$02@@UAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "float __cdecl
Dot<float,3>(class ColumnVector<float,3> const &,class ColumnVector<float,3>
const &)" (??$Dot@M$02@@YAMABV?$ColumnVector@M$02@@0@Z) referenced in
function _main
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall
ColumnVector<float,3>::ColumnVector<float,3>(void)"
(??0?$ColumnVector@M$02@@QAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall
Matrix<float,4,4>::Matrix<float,4,4>(void)" (??0?$Matrix@M$03$03@@QAE@XZ)
referenced in function _main


What might be causing these linking errors?
 
M

mlimber

I have some code that compiles fine with g++ (gnu c++ compiler for linux):

#include <math_types.h>
int main() {
    //graphics::MyMathTypes::vector3_type v1;
    typedef graphics::MyMathTypes math_types;
    typedef math_types::matrix4x4_type matrix4x4_type;
    typedef math_types::vector3_type vector3_type;
    typedef math_types::real_type real_type;
    matrix4x4_type m1;
    vector3_type v1;
    vector3_type v2;
    Dot(v1, v2);
    return 0;

}

But when I try to compile the same code on windows XP with visual studio
2008 I get:

1>test.obj : error LNK2019: unresolved external symbol "public: virtual
__thiscall Matrix<float,4,4>::~Matrix<float,4,4>(void)"
(??1?$Matrix@M$03$03@@UAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "public: virtual
__thiscall ColumnVector<float,3>::~ColumnVector<float,3>(void)"
(??1?$ColumnVector@M$02@@UAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "float __cdecl
Dot<float,3>(class ColumnVector<float,3> const &,class ColumnVector<float,3>
const &)" (??$Dot@M$02@@YAMABV?$ColumnVector@M$02@@0@Z) referenced in
function _main
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall
ColumnVector<float,3>::ColumnVector<float,3>(void)"
(??0?$ColumnVector@M$02@@QAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall
Matrix<float,4,4>::Matrix<float,4,4>(void)" (??0?$Matrix@M$03$03@@QAE@XZ)
referenced in function _main

What might be causing these linking errors?

Technically this is is off topic since it is related to platform
specifics (linking is always platform specific), not the C++ language
proper. If you have further questions, you should direct them to a VC+
+ group or forum. See FAQ 5.9.

<OT>Have you included math_types.cpp in your project?</OT>

Cheers! --M
 
S

saneman

"mlimber" <[email protected]> skrev i en meddelelse
I have some code that compiles fine with g++ (gnu c++ compiler for linux):

#include <math_types.h>
int main() {
//graphics::MyMathTypes::vector3_type v1;
typedef graphics::MyMathTypes math_types;
typedef math_types::matrix4x4_type matrix4x4_type;
typedef math_types::vector3_type vector3_type;
typedef math_types::real_type real_type;
matrix4x4_type m1;
vector3_type v1;
vector3_type v2;
Dot(v1, v2);
return 0;

}

But when I try to compile the same code on windows XP with visual studio
2008 I get:

1>test.obj : error LNK2019: unresolved external symbol "public: virtual
__thiscall Matrix<float,4,4>::~Matrix<float,4,4>(void)"
(??1?$Matrix@M$03$03@@UAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "public: virtual
__thiscall ColumnVector<float,3>::~ColumnVector<float,3>(void)"
(??1?$ColumnVector@M$02@@UAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "float __cdecl
Dot<float,3>(class ColumnVector<float,3> const &,class
ColumnVector<float,3>
const &)" (??$Dot@M$02@@YAMABV?$ColumnVector@M$02@@0@Z) referenced in
function _main
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall
ColumnVector<float,3>::ColumnVector<float,3>(void)"
(??0?$ColumnVector@M$02@@QAE@XZ) referenced in function _main
1>test.obj : error LNK2019: unresolved external symbol "public: __thiscall
Matrix<float,4,4>::Matrix<float,4,4>(void)" (??0?$Matrix@M$03$03@@QAE@XZ)
referenced in function _main

What might be causing these linking errors?

Technically this is is off topic since it is related to platform
specifics (linking is always platform specific), not the C++ language
proper. If you have further questions, you should direct them to a VC+
+ group or forum. See FAQ 5.9.

<OT>Have you included math_types.cpp in your project?</OT>



Ok I will try to find som VS group.

<OT>Found out that 3 different files/classes contained a function called
Norm, this seems to be the problem (eventhough its allowed on linux)</OT>
 
R

Rafał

saneman said:
<OT>Found out that 3 different files/classes contained a function called
Norm, this seems to be the problem (eventhough its allowed on linux)</OT>

There is nothing wrong in having several classes with a method with same
name.

Topics like Compilation Units / Translation Units, Include guards etc can be
helpfull.

Most probably the code is not correctly separated into .cpp / .hpp
headers/sources, or some files are not linked.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,012
Latest member
RoxanneDzm

Latest Threads

Top