среды:Windows C++ __imp ссылка ошибка при построении
- Windows Server 2012 R2
- затмение Луны
- MinGW
Я строй C++ программы, которая запрашивает против Cygwin Active Directory с использованием LDAP (аналогично этому MSDN page). У меня есть следующий пример кода из программы:
#include<iostream>
#include<windows.h>
#include<winldap.h>
using namespace std;
int main() {
string ldapServerUrl = "192.168.10.29";
int ldapServerPort = 389;
LDAP* ldapSession = ldap_init(&ldapServerUrl[0], ldapServerPort);
return 0;
}
Когда я пытаюсь построить этот образец с MinGW инструментария в Eclipse, сборка терпит неудачу, и линия с ldap_init()
подчеркнута красным цветом. Когда я наводил указатель мыши на ошибку, он говорит «Неопределенная ссылка на _imp__ldap_initA()
». Когда я пытаюсь использовать его с помощью инструментальной цепочки cygwin, он дает аналогичную ошибку (с немного отличающимся подчеркиванием).
Когда я пытаюсь скомпилировать с помощью ЦМДА (cd
в каталог, то g++ main.cpp
, Cygwin в PATH), я получаю эту ошибку:
/cygdrive/c/Users/SomeUser/AppData/Local/Temp/ccZczWy3.o:main.cpp:(.text+0x68):
undefined reference to `__imp_ldap_init'
/cygdrive/c/Users/SomeUser/AppData/Local/Temp/ccZczWy3.o:main.cpp:(.text+0x68):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp_ldap_init'
collect2: error: ld returned 1 exit status
Я читал некоторые о приставке __imp_
быть связан с ссылкой (этот материал немного над моей головой, обычно я разработчик Android). Один термин, который я натолкнулся, был declspec
. Я посмотрел на winldap.h
и имеет следующий (соответствующий?) Код:
#ifndef WINLDAPAPI
#define WINLDAPAPI DECLSPEC_IMPORT
#endif
Но оттуда, я понятия не имею, куда идти. Как мне его собрать?