C: Как вызывать функции из dll API? - PullRequest
0 голосов
/ 09 марта 2011

Я пытаюсь написать программу, которая использует C API. Этот API предоставляет только заголовочный файл api.h, .dll и .lib. Он использует __stdcall экспорта.

Я попытался включить api.h и добавить файлы .lib и .dll, но у меня все еще есть следующая ошибка в пути к библиотекам, но у меня все еще есть следующая ошибка:

**** Build of configuration Debug for project TestLibsp ****

**** Internal Builder is used for build               ****
gcc -LC:\Users\nbarraille\workspace\TestLibsp\lib -oTestLibsp.exe src\main.o
src\main.o: In function `main':
C:\Users\nbarraille\workspace\TestLibsp\Debug/../src/main.c:83: undefined reference to `sp_session_create@8'
C:\Users\nbarraille\workspace\TestLibsp\Debug/../src/main.c:86: undefined reference to `sp_error_message@4'
C:\Users\nbarraille\workspace\TestLibsp\Debug/../src/main.c:92: undefined reference to `sp_session_login@12'
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 721  ms

Вот мой файл .c:

#include "api.h"

int main(int argc, char **argv){
    sp_session *sp;
    sp_error err;
    sp_session_config spconfig;

    /* Create session */
    sp_error err = sp_session_create(&spconfig, &sp);
}

А вот определение функции, которую я пытаюсь вызвать в api.h

#ifndef SP_LIBEXPORT
#ifdef _WIN32
#define SP_LIBEXPORT(x) x __stdcall
#else
#define SP_LIBEXPORT(x) x
#endif
#endif

SP_LIBEXPORT(sp_error) sp_session_create(const sp_session_config *config, sp_session **sess);

Есть идеи?

Спасибо!

1 Ответ

1 голос
/ 09 марта 2011

Вам нужно связать библиотеку с gcc -l<libname> -L<libpath>. Я предполагаю, что вы используете eclipse, поэтому вы можете легко добавить lib в Project -> Properties -> C / C ++ Build -> Settings -> GCC C ++ Linker -> Library

...