Getting Linker Errors when I compile a CLR Library which uses Native C++ Library
-
I have a CLR Application where I am trying to write a .NET wrapper over calls made to native C++ Library. I am using VS 2008 but libraries are compiled in VS2003 or 2005. I am getting some linker errors on linking. Strangely, every error is 1 of these 3 unresolved external symbol ones - 1. std::locale::facet::_Register 2. std::ctype&::_Getcat 3. std::strstream::strstream Details of the errors - error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall std::strstream::~strstream(void)" (__imp_??1strstream@std@@UAE@XZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::strstream::strstream(char *,int,int)" (__imp_??0strstream@std@@QAE@PADHH@Z) Thanks a lot for the help. Amit
-
I have a CLR Application where I am trying to write a .NET wrapper over calls made to native C++ Library. I am using VS 2008 but libraries are compiled in VS2003 or 2005. I am getting some linker errors on linking. Strangely, every error is 1 of these 3 unresolved external symbol ones - 1. std::locale::facet::_Register 2. std::ctype&::_Getcat 3. std::strstream::strstream Details of the errors - error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall std::strstream::~strstream(void)" (__imp_??1strstream@std@@UAE@XZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::strstream::strstream(char *,int,int)" (__imp_??0strstream@std@@QAE@PADHH@Z) Thanks a lot for the help. Amit
AFAIK, mixing different runtime models will work some time, but not supported. I am not sure though.
Navaneeth How to use google | Ask smart questions
-
I have a CLR Application where I am trying to write a .NET wrapper over calls made to native C++ Library. I am using VS 2008 but libraries are compiled in VS2003 or 2005. I am getting some linker errors on linking. Strangely, every error is 1 of these 3 unresolved external symbol ones - 1. std::locale::facet::_Register 2. std::ctype&::_Getcat 3. std::strstream::strstream Details of the errors - error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall std::strstream::~strstream(void)" (__imp_??1strstream@std@@UAE@XZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall std::strstream::strstream(char *,int,int)" (__imp_??0strstream@std@@QAE@PADHH@Z) Thanks a lot for the help. Amit
Member 5703905 wrote:
I am using VS 2008 but libraries are compiled in VS2003 or 2005
Make sure you know which one it is, (VS2003 or 2005), 'cause you're going to have to link to its C++ runtime library (MSVCP71 - VS2003 - or MSVCP80 - VS2005). Even then, it might not work, because of mismatches in the C run-time library versions.