неразрешенный внешний символ vc ++ (не может вызвать конструктор) - PullRequest
2 голосов
/ 14 ноября 2011

У меня есть решение VC ++ с двумя проектами.Проект B ссылается на проект A. Проект B также имеет в качестве папки «Включить» (Свойства / Свойства конфигурации / C ++ / Дополнительные каталоги включения) папку из проекта А. Пространства имен не используются.

Когда я импортирую заголовок из проектаКласс вроде #include "someFolder\SomeClass.h", тогда я могу объявить указатель на класс.

SomeClass *sc;

Но как только я вызову конструктор, он не скомпилируется.IntelliSense не показывает никаких ошибок.

SomeClass *sc = new SomeClass("someString");

Я получаю:

ошибка LNK2001: "неразрешенный внешний символ" public_ thiscall SomeClass :: SomeClass (... "и"ошибка LNK1120: 1 неразрешенная внешность ".

Конструктор является общедоступным, как и методы SomeClass. Самое смешное, что я могу компилировать при вызове методов из SomeClass в Project B. Только cunstructor не делаетпохоже на работу.

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Вы должны связать объектный код, скомпилированный из "SomeClass.cpp". Если проект A компилируется в статическую библиотеку, добавьте ссылку на него.

1 голос
/ 14 ноября 2011

Исходный код компилируется, это ошибка компоновщика. Вам необходимо добавить файлы библиотеки (.lib) из проекта A в команду компоновщика в проекте B.

...