我正在构建一个c ++项目,我需要支持多个平台。因为我主要使用Linux,所以我也试图在Linux上编译Windows项目。
我正在使用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
我还尝试使用mingw编译自己的libsodium
二进制文件,但这并没有解决问题。