与 gfortran 链接时未定义对 'std::chrono::_V2::system_clock:now()' 的引用

Undefined reference to `std::chrono::_V2::system_clock::now()' when linking with gfortran

本文关键字:clock system 引用 now V2 链接 未定义 gfortran std chrono      更新时间:2023-10-16

我试图在INSEL中创建一个需要c++编程的用户定义块,我使用gfortran将其链接。

在我的程序

中有以下代码
// Setting seed for random number generators
unsigned seed = static_cast<int> (std::chrono::system_clock::now().time_since_epoch().count());

设置为随机数生成器的种子。当我使用g++ (gcc v.5.1.0)编译它时,它没有显示任何错误或警告。我的编译命令是

g++ -O0 -Wall -c -g3 -std=c++14 -fmessage-length=0 $(sourcesC)

sourcecC有我所有的。cpp程序。但是当我尝试用gfortran链接它时:

gfortran -shared -o C:***inselUB.dll -Wall -L./ -linselTools $(objects) 

我得到一个错误:

C:***resources/../src/constants.h:54: undefined reference to"std::空间::_V2:: system_clock::现在()

collect2.exe:错误:ld返回1退出状态makefile:11:配方目标'inselUB'失败

make: *** [inselUB] Error 1

对于这种类型的接口,我只是一个初学者。可能是一个简单的错误。谁能给我一个解决办法?

OS: win7

通常情况下,在链接c++对象和gfortran时需要链接-lstdc++。如果你链接g++,你必须链接-lgfortran