我正在尝试编译MonteCarlo Simulator程序(https://www.stat.washington.edu/thompson/Genepi/Mcleeps.shtml)。
这是我尝试构建项目时遇到的错误:
CMakeFiles\MonteCarlo.dir/objects.a(ne_classes.cpp.obj): In function `main':
C:/Users/Michael/CLionProjects/MonteCarlo/ne_classes.cpp:90: undefined reference > to `setall(long, long)'
C:/Users/Michael/CLionProjects/MonteCarlo/ne_classes.cpp:182: undefined reference > to `setall(long, long)'
C:/Users/Michael/CLionProjects/MonteCarlo/ne_classes.cpp:312: undefined
reference to `getsd(long*, long*)'
CMakeFiles\MonteCarlo.dir/objects.a(ne_classes.cpp.obj): In function
`Z21draw_folded_asin_normddiiiPid':
C:/Users/Michael/CLionProjects/MonteCarlo/ne_classes.cpp:1230: undefined
reference to `gennor(float, float)'
C:/Users/Michael/CLionProjects/MonteCarlo/ne_classes.cpp:1236: undefined
reference to `ranf()'
CMakeFiles\MonteCarlo.dir/objects.a(ne_classes.cpp.obj): In function
`Z10RealizeNewP10LatentInfoP8GeneInfoP7LogProbi':
C:/Users/Michael/CLionProjects/MonteCarlo/ne_classes.cpp:1990: undefined
reference to `gennor(float, float)'
CMakeFiles\MonteCarlo.dir/objects.a(ne_classes.cpp.obj): In function
`Z7uniformii':
C:/Users/Michael/CLionProjects/MonteCarlo/ne_classes.cpp:2111: undefined
reference to `ignuin(long, long)'
CMakeFiles\MonteCarlo.dir/objects.a(ranlib.c.obj): In function `setgmn':
C:/Users/Michael/CLionProjects/MonteCarlo/ranlib.c:1468: undefined reference
to `spofa'
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [MonteCarlo.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/MonteCarlo.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles/MonteCarlo.dir/rule] Error 2
这是我的CMakeLists.txt文件:
cmake_minimum_required(VERSION 3.12)
project(MonteCarlo)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
add_executable(MonteCarlo ne_classes.cpp com.c ranlib.c linpack.c
ne_headers.h ranlib.h)
ne_classes.cpp
包含主要功能
尝试搜索此问题后,我发现这可能是由于我使用了不同版本的g ++来编译程序。这也与.c和.cpp文件之间的链接问题有关。但是,我仍然不知道如何使用不同版本的g ++进行编译或如何导致链接问题。一切都在我之上,我已经花了数小时试图解决这个问题,所以我在这里问这个问题,作为我的最后选择。
如果您需要我可以发布每个文件的内容,也可以从上面链接的网站上自己下载它们。
谢谢
答案 0 :(得分:0)
我能够通过将extern "C" {#include "ranlib.h"}
添加到#include "ranlib.h"
文件中的ne_headers.h
来构建项目