首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >神迹c++的编译与链接

神迹c++的编译与链接
EN

Stack Overflow用户
提问于 2016-08-16 07:27:17
回答 2查看 893关注 0票数 1

我在编译和连接奇迹图书馆方面有问题。

在使用cmake时,当我试图编译和链接奇迹时,我会收到一些奇怪的有关奇迹1.h文件的错误消息,比如:

代码语言:javascript
运行
复制
error: expected initializer before ‘mr_large’

CMakeLists.txt:

代码语言:javascript
运行
复制
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})

main.cpp

代码语言:javascript
运行
复制
#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;
}

我所要做的就是创建一个使用奇迹库的简单程序

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-22 10:16:34

我发现了这个问题,我把它张贴在奇迹GitHub在这个链接上。

解决方案是将__int64更改为long long at mirdef.h

票数 0
EN

Stack Overflow用户

发布于 2016-08-16 07:47:34

您显示的错误是一个编译错误,它似乎来自Miracl报头之一。快速查看一下文档就会发现它是一个C库,而不是C++,因此它建议:

代码语言:javascript
运行
复制
extern "C"
{
     #include "miracl.h"
}

也继续说

尽管在大多数情况下,最好使用第7章中描述的C++包装器类。

因此,我建议您查看一下文档的C++接口。如果我正确地理解了他们的例子,那么在miracl.hmirdef.hecn.h中,您就不必在C++中包含它们。

在修复了这个问题之后,为了链接库,下面这样的使用find_library()的方法应该可以工作,将路径更新为绝对路径,并将/path/to/libscapi...更新到实际路径:

代码语言:javascript
运行
复制
find_library(
    LIBMIRACL
    NAMES miracl
    PATHS /path/to/libscapi/install/lib/
    NO_DEFAULT_PATH
)

然后,您可以通过以下方法链接库:

代码语言:javascript
运行
复制
target_link_libraries(OS-PSI ${LIBMIRACL})

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

代码语言:javascript
运行
复制
include_directories(/path/to/libscapi/lib/Miracl/include)

然后您可以使用以下内容,这允许您的程序使用不同的安装路径进行编译:

代码语言:javascript
运行
复制
#include <iostream>
#include <big.h>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38968917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档