mingw-w64无法链接到libsodium

时间:2017-04-28 15:03:52

标签: c++ linux mingw-w64 libsodium

我正在构建一个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二进制文件,但这并没有解决问题。

0 个答案:

没有答案