Как создать ссылку на файл. 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

594   1  

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

    Ничего не найдено.