mingw-w64 не может связаться с libsodium

Я строю проект C++, где мне нужно поддерживать несколько платформ. Поскольку я в основном использую Linux, я пытаюсь скомпилировать проект для Windows также на Linux.

Я использую mingw компилятор. Это похоже на g++, но у меня есть проблемы со ссылками libsodum библиотека для моего проекта.

Я на самом деле использую cmake, но это простой патч кода, который все еще воссоздает проблему.

test.cpp

#include <iostream>
#include <sodium.h>

int main() {
    if (sodium_init() == -1) {
        std::cout << "Sodoum init failed" << std::endl;
    } else {
        std::cout << "Success" << std::endl;
    }
    return 0;
}

в ту же папку я скопировал содержимое libsodium-win64 папка, в которой находятся готовые бинарные файлы для libsodium, Теперь это выглядит так:

.
├── bin
│   ├── libsodium-18.dll
│   └── libsodium-8.def
├── compile
├── include
│   ├── sodium
│   │   ├── core.h
│   │   ├── ... (and lot of other .h files)
│   │   └── version.h
│   └── sodium.h
├── lib
│   ├── libsodium.a
│   ├── libsodium.dll.a
│   ├── libsodium.la
│   └── pkgconfig
│       └── libsodium.pc
└── test.cpp

Я сейчас пытаюсь скомпилировать это с mingw,

i686-w64-mingw32-g++ test.cpp \
-static-libstdc++ -static-libgcc \
-Llib -lsodium -Iinclude

И это возвращает мне ошибку:

/tmp/ccyODazj.o:test.cpp:(.text+0x17): undefined reference to `sodium_init'
collect2: error: ld returned 1 exit status

Я также попытался составить свой собственный libsodium двоичные файлы с mingw, но это не решило проблему.

0 ответов

Другие вопросы по тегам