gpt4 book ai didi

c++ - 编译和链接 miracl c++

转载 作者:行者123 更新时间:2023-11-30 05:23:52 24 4
gpt4 key购买 nike

我在编译和链接 miracl 库时遇到问题。

当我在使用 cmake 时尝试编译和链接 miracl 时,我收到有关 miracl.h 文件的奇怪错误消息,例如:

error: expected initializer before ‘mr_large’

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0)
project(OS-PSI)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -maes -O3 -mavx")

include_directories($ENV{HOME}/libscapi/lib/Miracl/include)

find_library(
LIBMIRACL
NAMES miracl
PATHS $ENV{HOME}/libscapi/install/lib/
NO_DEFAULT_PATH
)


set(SOURCE_FILES main.cpp)
add_executable(OS-PSI ${SOURCE_FILES})

target_link_libraries(OS-PSI ${LIBMIRACL})

主要.cpp

#include <iostream>
#include <miracl.h>
#include <mirdef.h>
#include <ecn.h>
#include <big.h>


int main(int argc, char *argv[])
{
Big big1(12);
int partyId = atoi(argv[1]);
return 0;
}

我想做的就是创建一个使用 miracl 库的简单程序

最佳答案

您显示的错误是编译错误,似乎来自 Miracl header 之一。快速浏览 documentation显示它是一个 C 库而不是 C++,因此它建议:

extern "C"
{
#include "miracl.h"
}

还接着说

although in most cases it will be preferable to use the C++ wrapper classes described in Chapter 7.

所以我建议您查看 documentation C++接口(interface)。如果我正确理解了他们的示例,看起来您根本不必包含 miracl.hmirdef.hecn.h对于您在 C++ 中的示例。

解决该问题后,为了链接库,使用 find_library() 进行如下操作应该工作,将路径更新为绝对路径并将 /path/to/libscapi... 更新为您的实际路径:

find_library(
LIBMIRACL
NAMES miracl
PATHS /path/to/libscapi/install/lib/
NO_DEFAULT_PATH
)

然后您可以使用以下方式链接您的图书馆:

target_link_libraries(OS-PSI ${LIBMIRACL})

您还可以通过将 Miracl/include 目录添加到您的包含路径来修复您的包含:

include_directories(/path/to/libscapi/lib/Miracl/include)

然后你可以使用下面的,它允许你的程序编译不同的安装路径:

#include <iostream>
#include <big.h>

关于c++ - 编译和链接 miracl c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38968917/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com