1 Востаннє редагувалося Yola (01.06.2013 18:49:56)

Тема: Як вказати exe-проекту де брати ліби інших проектів у рішенні[РОЗВ'ЯЗ]

VS 2010, VC++.

У мене є Solution з трьох проектів. Один виконуваний і два бібліотеки.

Як мені вказати. щоб виконуваний знав де брати ці бібліотеки?

Так, я можу це зробити через Linker->Input->Additional libraries, але гадаю, що існує інший спосіб. якщо проекти в одному рішенні.

2

Re: Як вказати exe-проекту де брати ліби інших проектів у рішенні[РОЗВ'ЯЗ]

А вам для чого саме це треба: лінкування на етапі формування екзешника, чи формування папки з усіма необхідними файлами, чи просто для дебагу?..

3 Востаннє редагувалося Yola (01.06.2013 18:11:07)

Re: Як вказати exe-проекту де брати ліби інших проектів у рішенні[РОЗВ'ЯЗ]

Та я просто зібрати проект не можу, видає помилки зв'язувальника на кшталт:

3>Renderer_PC32_d.lib(Renderer.obj) : error LNK2019: unresolved external symbol "public: __thiscall GrDr_VertexBufferImmutable::GrDr_VertexBufferImmutable(unsigned int,void const *)" (??0GrDr_VertexBufferImmutable@@QAE@IPBX@Z) referenced in function "private: void __thiscall Renderer::CreateCube(struct Renderer::VertexBuffer &)" (?CreateCube@Renderer@@AAEXAAUVertexBuffer@1@@Z)
3>Renderer_PC32_d.lib(Renderer.obj) : error LNK2019: unresolved external symbol "public: static void __cdecl GraphicsDriver::Create(struct GraphicsDriverParam const *)" (?Create@GraphicsDriver@@SAXPBUGraphicsDriverParam@@@Z) referenced in function "public: void __thiscall Renderer::Initialize(struct HWND__ *)" (?Initialize@Renderer@@QAEXPAUHWND__@@@Z)
3>Bin\Basement.exe : fatal error LNK1120: 2 unresolved externals

Я прямо вказав де лежить бібліотека через Властивості проекту і все запрацювало, але гадаю, що це неправильний варіант, бо інший проект робить якось інакше, але я не можу знайти як.

4

Re: Як вказати exe-проекту де брати ліби інших проектів у рішенні[РОЗВ'ЯЗ]

Добре, відповідь знайшлась)

Правий клац на EXE проекті, Properties, Common Properties, Framework and References. Клац на Add New Reference і вибрати проект, який генерує .lib.

Також це забезпечить порядок збирання проектів, щоб вони збирались не паралельно, а відповідно до цих залежностей.

5

Re: Як вказати exe-проекту де брати ліби інших проектів у рішенні[РОЗВ'ЯЗ]

Yola, цей варіант створить вам екзешник та дві статичні бібліотеки, як включаться до екзешника як складові. Якщо вам треба отримати все ж DLL-ки, пошукайте у студії, де задати опції лінкера (Linking options, parameters чи якось так) і там пропишіть у якості параметрів

-lMyCoolLibrary1 -lMyVeryCoolLibrary2

.

6

Re: Як вказати exe-проекту де брати ліби інших проектів у рішенні[РОЗВ'ЯЗ]

Як варіант:

#pragma comment(lib, "libname.lib")
Подякували: Yola2

7 Востаннє редагувалося Yola (02.06.2013 11:11:37)

Re: Як вказати exe-проекту де брати ліби інших проектів у рішенні[РОЗВ'ЯЗ]

Bartash написав:

Yola, цей варіант створить вам екзешник та дві статичні бібліотеки, як включаться до екзешника як складові. Якщо вам треба отримати все ж DLL-ки, пошукайте у студії, де задати опції лінкера (Linking options, parameters чи якось так) і там пропишіть у якості параметрів

-lMyCoolLibrary1 -lMyVeryCoolLibrary2

.

варіант зі статичними бібліотеками мене поки що влаштовує, гадаю це значно спростить зневадження.

Очі.завидющі написав:

Як варіант:

#pragma comment(lib, "libname.lib")

Угум, це те саме, що я не хотів робити через Linker->Input->Additional libraries :)