Неразрешенная внешняя символьная ошибка, возникающая только в 64-битном режиме, а не в 32-битной сборке

У меня есть код VC ++ (созданный с использованием VS2008), который использует некоторые статические библиотеки (файлы * .lib, связанные статически во время компиляции).

Для облегчения понимания давайте обозначим мой EXE-код как «AAA.EXE», а файлы lib - «A.lib», b.lib и т. Д.

Код AAA.EXE и код статических библиотек создаются с использованием VS2008.

Я вижу, что мой "AAA.EXE" работает нормально в 32-битной версии и показывает ошибки компоновщика ниже, когда AAA.EXE построен в 64-битном режиме.

Конечно, я перестроил статические библиотеки в 64-битном режиме и указал путь к lib в моем AAA.EXE, например, так: «Свойства конфигурации проекта, соответствующие AAA.EXE -> Linker -> General / Input».

Эта ошибка компоновщика действительно беспокоит меня долгое время. Любая помощь очень ценится.

Logger.lib(Loggerr.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall CWTTLogger::CWTTLogger(void)" (__imp_??0CWTTLogger@@QAE@XZ)    

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall CWTTLogger::~CWTTLogger(void)" (__imp_??1CWTTLogger@@UAE@XZ)    

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionA(unsigned short *,long *)" (__imp_?FunctionA@CWTTLogger@@QAEJPAGPAJ@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionB(unsigned short *,long)" (__imp_?FunctionB@CWTTLogger@@QAEJPAGJ@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionC(unsigned short *,unsigned long,unsigned short *,long)" (__imp_?FunctionC@CWTTLogger@@QAEJPAGK0J@Z)     

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __cdecl CWTTLogger::FunctionD(unsigned long,long,...)" (__imp_?FunctionD@CWTTLogger@@QAAJKJZZ)             

1>Logger.lib(Logger.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: long __thiscall CWTTLogger::FunctionE(unsigned short *,long)" (__imp_?FunctionE@CWTTLogger@@QAEJPAGJ@Z)         


1>C:\Users\User1\Documents\XYZ\Code\64bit\aaa.exe: fatal error LNK1120: 7 unresolved externals

Также добавить:

Я сделал 2 изменения в настройках, чтобы сделать мой код AAA.exe 64-битным из 32-битного :: 1)

2)

Конечно, код совместим как для 32-битных, так и для 64-битных. Закончены ли эти 2 изменения настроек в VC2008 для создания 64-битной сборки 32-битного кода AAA.exe?

Глядя на другую ссылку на стек-поток, я вижу, что есть еще одна настройка в «Свойствах конфигурации проекта -> Linker-> Advanced-> Целевая машина по умолчанию« не установлена », и если я делаю целевую машину ==« MACHINEx64 », я получаю ошибки другого рода, которые я получал раньше:

«Неустранимая ошибка LNK1112: тип компьютера модуля« X86 »конфликтует с типом машины назначения« x64 »»

Я действительно не понимаю, стоит ли мне устанавливать в поле «Целевая машина» в параметре компоновщика значение «Не установлено» или «MACHINEx64»?

Если это «ДА», мне нужно выяснить, как решить проблему.

Ответы на вопрос(4)

Ваш ответ на вопрос