Использование созданного DLL-файла (вызов функции из приложения) - PullRequest
2 голосов
/ 09 сентября 2011

У меня есть глупый вопрос.У меня есть три файла C: f1.c f2.c f3.c, которые содержат:

// f1.c
int f1()
{
    return 2;
}

// f2.c
int f2()
{
    return 4;
}

// f3.c
int f3()
{
    return 10;
}

У меня уже есть 3 объектных файла, когда я запускаю следующую команду (я использую mingc под windows7):

gcc -c f1.c f2.c f3.c

и я создаю файл dll:

gcc f1.o f2.o f3.o -o test1.dll -shared

с помощью DLL Export Viewer Я открыл этот файл: enter image description here

Как я могу использовать этот файл в моемприложение (кроссплатформенное)?Как я могу назвать functrion f1, f2, f3?

Извините за мой плохой английский

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Если у вас есть заголовок, единственное, что вам не хватает, - это архив A, который необходим компоновщику для выяснения того, что предоставляет DLL.

Измените это:

gcc f1.o f2.o f3.o -o test1.dll -shared

Для этого:

gcc f1.o f2.o f3.o -o test1.dll -shared -Wl,--out-implib,libtest1.a

Затем, чтобы связать с общей библиотекой, передайте -ltest1 в gcc.

Вам все равно придется перекомпилировать библиотеку для каждой платформыи архитектура (x86, AMD64, IA64 и т. д.).Windows использует DLL, но Linux использует Shared Objects, например.

См. http://www.mingw.org/wiki/sampleDLL для получения дополнительной информации.

1 голос
/ 09 сентября 2011
  1. Включить файл заголовка в вызывающую программу.
  2. Свяжите вызывающую программу с файлом .lib, связанным с библиотекой.
  3. Убедитесь, что библиотека находится в пути поиска библиотеки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...