Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/56: Рейтинг темы: голосов - 56, средняя оценка - 4.89
3 / 3 / 1
Регистрация: 03.07.2013
Сообщений: 59
1

Как подключить dll, lib к проекту?

16.03.2016, 11:27. Показов 11334. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Раньше никогда этим не занимался, и длл и либ файлы не мои.
Надо подключить к проекту что бы пропали ошибки
Bash
1
LNK2019 ссылка на неразрешенный внешний символ
Помогите как? vs 2015
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2016, 11:27
Ответы с готовыми решениями:

Как в Borland C++ к проекту подключить lib библиотеку?
Как в Borland C++ к проекту подключить lib библиотеку?

Borland C++ 3.0 - Как подключить LIB файл к проекту?
Добрый день! Мне необходимо использовать стороннюю библиотеку функций. Имеется один LIB и один ...

Как подключить lib файл к проекту в C++ Builder
Здрасвтвуйте, помогите плиз, нужно добавить lib файл к проекту в C++ Builder. Я скачал библиотеку...

как подключить dll и lib SDL
как подключить к проекту(в Visual Studio 2010) библиотеку SDL?// есть SDL.dll, SDL.lib и...

14
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
16.03.2016, 14:01 2
Лучший ответ Сообщение было отмечено fryn3 как решение

Решение

С 2015 версией я не работаю, но раз никто не отвечает...
У меня в 2008 это в главном меню Project -> <имяпроекта>Properties -> Configuration Properties -> Linker -> Input -> Additional Depenencies сюда вписать имя lib с путем. dll нужно на этапе выполнения и во время build проекта не требуется.
2
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
17.03.2016, 09:48 3
У меня такая же проблема. Указала библиотеку, но ошибка все равно осталась.
VS Community 2013.
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
17.03.2016, 11:34 4
Simply me, то есть вы хотите сказать, что линкер не находит какого-то имени, вы подключаете к проекту библиотеку в которой это имя есть в качестве внешнего, и после этого линкер по-прежнему это имя не находит? Позвольте вам не поверить. Вы что-то сделали неправильно. Что - сказать трудно, поскольку вы не приводите подробности.
0
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
17.03.2016, 13:52 5
Ну у меня линкер не находит функцию PQconnectdb из библиотеки libpq.lib. После подключения библиотеки такая же ошибка.

error LNK2019: unresolved external symbol _PQconnectdb referenced in function _wmain
fatal error LNK1120: 1 unresolved externals
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
17.03.2016, 14:45 6
Вот чисто из вредности. Нашел в интернете какую-то libpq.lib, присоединил ее к проекту, как я писал выше, написал следующую программу. Build успешный. При запуске, правда, говорит, что отсутствует libpq.dll, но это уже совсем другая история. Вы определенно скрываете от общественности какие-то нюансы.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
using namespace std;
 
extern "C" void PQconnectdb();
 
int main() {
    PQconnectdb();
    cout << "Hello!";
    return 0;
}
0
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
17.03.2016, 14:56 7
palva, а проверьте, пожалуйста, мой код. Я здесь параметры не буду указывать, наверное, можно и без параметров вызывать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <libpq-fe.h>
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    PGconn          *conn;
    PGresult        *res;
    conn = PQconnectdb("Параметры засекречены");
    printf("Hello");
    getchar();
    return 0;
}
В Вашем коде у меня ругается на iostream и на функцию cout. Насколько помню, она из iostream.
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
17.03.2016, 16:17 8
Ну, давайте поторгуемся. У меня нет фалов libpq-fe.h, и конечно же файла stdafx.h. Где-то там описан идентификатор PQconnectdb. Если я всё поудаляю, то все равно получу
error C3861: 'PQconnectdb': identifier not found
поэтому в любом случае мне придется где-то дать знать компилятору, что такое PQconnectdb. Мне приходится написать где-то extern. Так что следующий код билдится у меня без ошибок.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <conio.h>
#include <tchar.h>
 
extern "C" int PQconnectdb(char*);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int conn;
    conn = PQconnectdb("Параметры засекречены");
    printf("Hello");
    getchar();
    return 0;
}
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.03.2016, 19:16 9
Цитата Сообщение от Simply me Посмотреть сообщение
Ну у меня линкер не находит функцию PQconnectdb из библиотеки libpq.lib.
проверте что дебаг линкуется с дебагом, а релиз с релизом.
так же убедитесь, что 32 бита линкуются с 32 битами,
а 64 бита - с 64.
0
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
18.03.2016, 08:26 10
palva, я добавила в свой код эту строчку
C++
1
extern "C" int PQconnectdb(char*);
Получилось так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <libpq-fe.h>
 
extern "C" int PQconnectdb(char*);
 
int _tmain(int argc, _TCHAR* argv[])
{
    PGconn          *conn;
    PGresult        *res;
    conn = PQconnectdb("Параметры засекречены");
    printf("Hello");
    getchar();
    return 0;
}
Теперь выдает ошибку second C linkage of overloaded function not allowed.
Как я понимаю, это ругательство свидетельствует о том, что он все-таки видит не только ту PQconnectdb, которую мы объявили глобально, но и ту, которая сидит в библиотеке libpq.lib, и ругается, что у них разные входные и выходные параметры, т.е. на перегрузку.

Цитата Сообщение от hoggy Посмотреть сообщение
проверте что дебаг линкуется с дебагом, а релиз с релизом.
так же убедитесь, что 32 бита линкуются с 32 битами,
а 64 бита - с 64.
hoggy, напомните, пожалуйста, как это проверить!
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
18.03.2016, 08:41 11
Я так понимаю, что это сообщение не линкера, а компилятора. И возникает оно потому, что в языке C не допустима перегрузка функций. А у вас получилось, что функция PQconnectdb описана два раза. А зачем вы вставили эту мою строчку с extern, если у вас есть в наличии файл libpq-fe.h? Ведь там эта функция уже описана. Какая-то ошибка тогда возникала? Если была ошибка линкера, то он не видит или не принимает по какой-то причине библиотеку.
0
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
18.03.2016, 08:47 12
Я думала, что эта строчка компенсирует отсутствие библиотеки libpq.lib, а не файла libpq-fe.h. Убрала эту строчку.
Линкер почему-то не видит библиотеку.
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
18.03.2016, 09:03 13
Тогда обратите внимание на пост hoggy,
0
242 / 35 / 8
Регистрация: 05.05.2012
Сообщений: 521
18.03.2016, 11:46 14
Цитата Сообщение от hoggy Посмотреть сообщение
проверте что дебаг линкуется с дебагом, а релиз с релизом.
так же убедитесь, что 32 бита линкуются с 32 битами,
а 64 бита - с 64.
А что с чем сравнивать? PostgreSQL и VS или VS и ОС?
ОС - 64разрядная. У PostgreSQL и VS не могу определить разрядность. VS, скорее всего, 32разрядная. Потому что там, где редактор кода, есть 2 combobox, в первом варианты: Debug, Release, Configuration Manager, во втором: Win32, Configuration Manager.

Нужно другую VS установить?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.03.2016, 18:28 15
Цитата Сообщение от Simply me Посмотреть сообщение
А что с чем сравнивать?
ваше приложение и библиотеку с которой нужно линковаться

Добавлено через 3 минуты
Цитата Сообщение от Simply me Посмотреть сообщение
напомните, пожалуйста, как это проверить!
версию вашего билда вы можете посмотреть в настройках проекта .
версию библиотек: если постгресс 64, значит и библиотеки у него тоже 64.
к дебажным версиям в конце имени добавляется буковка 'd'

libpq.lib - релиз.
libpqd.lib - дебаг.
1
18.03.2016, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.03.2016, 18:28
Помогаю со студенческими работами здесь

Как подключить dll на C# к проекту (dll) на С++
Подскажите, пожалуйста, как подключить dll на C# к проекту (dll) на С++. В интернете много...

Как подключить dll к проекту?
Ребят помогите пожалуйста, если сможете а то я уже 3 дня долбаюсь чет никак не могу разобраться с...

Как подключить DLL к проекту
Нужно подключить Dll к C# https://vk.codeplex.com/releases/view/122628 из исходников собрать не...

Как подключить DLL к проекту?
Всем привет! У меня тмкой вопрос. Есть API для управления цифровой камерой, подключаемой к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru