Сборка Libjna - ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл 'LIBCMT.lib' - PullRequest
1 голос
/ 03 февраля 2020

Я повторно отправляю сообщение о проблеме из github (https://github.com/libffi/libffi/issues/538), которая возникла у меня на прошлой неделе.

В настоящее время у меня возникла проблема с получением некоторых библиотек JNA, собранных как jar deployables используя скрипт сборки Ant (FYI: https://github.com/thepaul/libjna-java). для того, чтобы использовать API из этой библиотеки для моего другого проекта. (Единственная цель, с которой я столкнулся с трудностями построения - это возможность использовать его API. Из-за отсутствия документации и отсутствия предоставленного артефакта сборки я должен был сделать это сам. Импортировать весь репозиторий libjna как проект в мой другой проект может быть другой подход, но я не думаю, что это уместно. Тем не менее, если есть какие-либо более эффективные способы использования библиотек в libjna, дайте мне знать!)

Так вот что Я пытался встроить его в развертываемый файл jar:

У меня уже загружен исходный проект.

Попытка скомпилировать с помощью Ant (я скачал последнюю версию) на cygwin. Не удалось, потому что это требует libffi. Поэтому я скачал исходный код libffi отсюда (https://github.com/libffi/libffi).

Попытался снова скомпилировать, используя Ant. Ошибка, так как не удалось найти "/ c / Program Files (x86) / Microsoft Visual Studio 9.0 / vc / bin / cl", как указано в config.log. Поэтому я проверил cc. sh и обнаружил, что он ссылается к более старой версии Microsoft Visual Studio. У меня есть существующая установка Visual Studio Express. Поэтому я изменил путь на "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ WDExpress \ VC \ Tools \ MSVC \ 14.16.27023 \ bin \ Hostx86 \ x64" в cc. sh file.

Попытка снова скомпилировать с помощью Ant. Казалось, исправление сработало, но не с другой ошибкой, потому что не удалось найти "mspdbcore.dll". Я нашел этот файл в ".. \ x86", поэтому копирую файл в .. \ x64

Попытался снова скомпилировать с помощью Ant. Ошибка с похожей ошибкой, но другим файлом, так как не удалось найти «mspdb140.dll». Я нашел этот файл в ".. \ x86", поэтому скопировал

Попытался снова скомпилировать. Ошибка с другой ошибкой, потому что теперь она говорит

"LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'"

, хотя я могу подтвердить, что этот файл определенно находится в "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ WDExpress \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x64 "

Чтобы устранить эту ошибку, я попытался (напрасно):

  1. добавить пути к Microsoft Visual Studio в PATH
    • C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ WDExpress \ VC \ Tools \ MSVC \ 14.16.27023 \ bin \ Hostx86 \ x64
    • C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ WDExpress \ VC \ Tools \ MSVC \ 14.16.27023 \ lib \ x64
    • C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ WDExpress \ Common7 \ IDE
  2. Загруженные MS Visual Studio 2019, как Community, так и Professional (по какой-то причине не смогли найти эти dll)
  3. Загружали одновременно mspdb140.dll и mspdbcore.dll, config .log сообщает, что не может найти эти файлы

Примечание. Однако я также провел некоторые исследования в Интернете:

  1. I не используйте Visual Studio IDE, так как я только пытаюсь собрать его с помощью Ant, поэтому этот пост не очень помог ( ССЫЛКА: фатальная ошибка LNK 1104: не могу открыть файл 'LIBCMT.lib' )
  2. Я тоже не совсем понимаю ответ на этот пост (https://social.msdn.microsoft.com/Forums/en-US/cbedc1ba-c50b-499e-aa2e-12b0ce6a40ba/lnk1104-cannot-open-file-libcmtlib?forum=vclanguage)

Так вот, где я застрял.

См. Последний журнал конфигурации прилагается. config.log

Также прилагается журнал сборки Ant. ant_compile_error.txt

Любой, кто может помочь, будет высоко ценится!

Приветствия Дейл

...