Visual Studio 2010 + 2005

  • Автор темы Dimmuborgir
  • Дата начала
D

Dimmuborgir

#1
Здравствуйте, все! Сразу к делу. Есть лайба (lib) написанная на 2005 студии. Ее недавно попробовал использовать человек, у которого стоит студия 2010. Столкнулись с проблеммой линковки. Лайба использует только стандартные виндовые библиотеки (mfc нет). Может у кого были подобные проблеммы и как их решали? Ниже приведен список всех инклудок:

C++:
#include <string>
#include <vector>
#include <algorithm>
#include <assert.h> 

#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")

#include <complex>
#include <strstream>

#include <math.h>
#include <tchar.h>
Ошибок выходит много, вот первые две:


Код:
Ошибка	2	error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator=(char const *)" (__imp_??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z) в функции "public: void __thiscall Terminal::ClearCommandQueue(bool)" (?ClearCommandQueue@Terminal@@QAEX_N@Z)	D:\PProject_Tmp\BusDriver\BusDriver\BDUBus_D.lib(terminal.obj)	BusDriver

Ошибка	3	error LNK2001: неразрешенный внешний символ ""__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::operator=(char const *)" (__imp_??4?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV01@PBD@Z)"	D:\PProject_Tmp\BusDriver\BusDriver\BDUBus_D.lib(Global.obj)	BusDriver
 
R

rrrFer

#2
попробуй создать очень простую библиотеку c единственной функцией и дай тому человеку, у которого какая-то там студия, есть подозрение что вы что-то не так подключаете )
подозреваю, что компилятор обнаруживает заголовки функций в lib, но их реализации найти не может.
 
D

Dimmuborgir

#3
Можно конечно попробовать, но в ошибках вроде чётко прослеживается ругань на STL-овский string, а не на мои функции.. Дело в том что при точно таком же подключении в созданному проекту в 2005 студии этой лайбы у того же человека проблемм нет.
 

a0z

Well-known member
15.03.2011
108
0
#4
Вариант 0: Компилировать как Multithreaded а не Multithreaded Dll. При этом передавать из этой либки или в неё STL-ные объекты нельзя. Нельзя выделять память в либке а освобождать в программе.

Вариант 1: Перекомпилировать либку под 10 студией. И иметь 2 версии.