Как создать ссылку на файл. lib в Visual C++ 2010? Без ссылки на проект?
У меня просто есть проблема, которую я пытаюсь решить в течение самого долгого времени.
У меня есть проект статической библиотеки в visual c++, и я хочу, чтобы другой проект мог ссылаться на него. До сих пор я просто добавлял ссылку на проект статической библиотеки, который автоматически связывает библиотеку.
Я хочу иметь возможность ссылаться на библиотеку, используя только заголовочные файлы и.файл lib. Однако я получаю ошибку "неразрешенный внешний символ".
Я думал, что был делая это правильно-я указал каталог include, каталог библиотеки и вошел во входные свойства компоновщика и предоставил lib в качестве дополнительной зависимости.
Я могу ссылаться на другие статические библиотеки таким образом (например, SDL), так почему же я получаю ошибки, когда пытаюсь ссылаться на свою?
Спасибо за помощь.
Проблема в том, что он не ссылается на фактический файл lib, или что-то внутри самого lib?
Вот сообщения об ошибках, которые я получаю:
Ошибка 2 ошибка lnk2019: неразрешенных внешних символ "общественности: пустота __thiscall XEngine::составе xcore::XScreen::инит(класс XEngine::составе xcore::XGame &)" (?инит@XScreen@составе xcore@XEngine@@QAEXAAVXGame@23@@Зи), на которые ссылается функция "недействительным как __cdecl XEngine::XEngineInit(класс XEngine::исключением официальных праздничных::XScreen &,класс XEngine::составе xcore::XGame &)" (?XEngineInit@XEngine@ @ YAXAAVXScreen@XCore@1@AAVXGame@31@ @ Z) C:UsersXander MasottoDocumentsVisual Studio 2010ProjectsPongPongsource.obj Pong
Ошибка 3 ошибка LNK2019: неразрешенных внешних символ "общественности: __thiscall XEngine::составе xcore::XScreen::~XScreen(ничтожным)" (??1XScreen@составе xcore@XEngine@@ка@ХZ), на которые ссылается функция "недействительным как __cdecl XEngine::XEngineInit(класс XEngine::составе xcore::XGame &)" (?XEngineInit@XEngine@@YAXAAVXGame@XCore@1@ @ Z) C:UsersXander MasottoDocumentsVisual Studio 2010ProjectsPongPongsource.obj Pong
Ошибка 4 ошибка LNK2019: неразрешенный внешний символ " public: _ _ thiscall XEngine:: XCore:: XScreen:: XScreen(void)" (??0XScreen@составе xcore@XEngine@@ка@ХZ), на которые ссылается функция "недействительным как __cdecl XEngine::XEngineInit(класс XEngine::составе xcore::XGame &)" (?XEngineInit@XEngine@@YAXAAVXGame@XCore@1@ @ Z) C:UsersXander MasottoDocumentsVisual Studio 2010ProjectsPongPongsource.obj Pong
1 ответ:
Убедитесь, что вы экспортируете функции, классы и переменные в вашей библиотеке, которые вы хотите предоставить другим приложениям (например, dll или exe). По умолчанию они не выставляются.
Основная работа для этого обычно выполняется при создании проекта для вашей библиотеки.
#ifdef TESTLIB_EXPORTS #define TESTLIB_API __declspec(dllexport) #else #define TESTLIB_API __declspec(dllimport) #endifС кодом выше, сгенерированным во время создания проекта, у меня есть только две вещи, которые я могу сделать, чтобы предоставить функции, классы или переменные:
1) Убедитесь, что я пусть TESTLIB_EXPORTS определен как препроцессор. Параметры проекта: C++ / Preprocessor/PreprocessorDefinitions
2) Используйте определение TESTLIB_API для каждой функции, класса или переменной, которую я хочу выставить:
class TESTLIB_API Order { void doSomething(); };
Comments