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, но это не решило проблему.