Конвертировать .a файл в .dll - PullRequest
       13

Конвертировать .a файл в .dll

1 голос
/ 21 октября 2011

На этот вопрос наверняка где-то есть ответ, но я не смог его найти.Я пишу на Java уже более десяти лет, и мой опыт работы с Си был на Unix, так что я вроде как на первом месте.По моему опыту Unix, кто-то другой написал make-файл, и он просто работал.

Я скачал исходный код C для libtar-1.2.11 из feep и запустил make изнутри cygwin.Это создало файл .a и файл .exe.EXE-файл, по сути, представляет собой tar для запуска в Windows, но я хотел, чтобы библиотеки читали и обрабатывали файл в моем собственном коде.

Если я правильно помню, они должны быть в .a файл (архив ??), и это должно быть связано с библиотекой, которую я могу использовать из моей программы на C ++.Поэтому я ищу способ сделать это.

Я пишу библиотеку, которая будет использовать файл .tgz, и поэтому я хочу использовать эту библиотеку.Я думаю, что я хотел бы превратить libtar в DLL, а также сам создать DLL для использования на других языках.

Итак, как мне превратить мой .a файл во что-то, что можно использовать в других приложениях, икак получить к нему доступ из своего кода?

Ответы [ 2 ]

4 голосов
/ 21 октября 2011

Сгенерированный libmylib.a на самом деле является архивом всех *.o для libtar-1.2.11.
Вы можете проверить это, выполнив nm libmylib.a, он напечатает все файлы *.o.
Введите свой код и ссылку:

gcc -o my_application my_application.o -lmylib

Вы создали это с помощью cygwin, выНасколько я знаю, я не получаю dll из этого.

3 голосов
/ 21 октября 2011

Ну, DLL - это эквивалент разделяемой библиотеки в Unix (.a - это библиотека для статической компоновки, эквивалент Windows - .LIB файл), поэтому вы хотите собратьобщая библиотека.

Действительно, когда вы создаете как

make LDFLAGS=-shared

, результирующая libtar/libtar.exe на самом деле будет DLL с ошибочным именем.

Обратите внимание, однако, что DLL-библиотека, переведенная Cygwin, отличается от собственной DLL-библиотеки Windows и всегда будет зависеть от DLL-библиотеки Cygwin (и, возможно, даже от установленной среды Cygwin), поэтому если вы планируете включить еев нативном коде Windows это, вероятно, не тот подход, к которому вы хотите стремиться.

Могу ли я предложить вам перейти с полностью мертвого (последний выпуск в 2003 году) libtar на libarchive, который поставляется с нативной Windowsинструкция по сборке ?

...