我有一个简单的 cpp 程序,可以生成给定范围之间的随机数[下面的代码]
代码参考:https://www.geeksforgeeks.org/how-to-generate-random-number-in-range-in-cpp/
#include <iostream>
#include <random>
int main()
{
const int range_from = 1;
const int range_to = 4;
std::random_device rand_dev;
std::mt19937 generator(rand_dev());
std::uniform_int_distribution<int> distr(range_from, range_to);
for(int i=0;i<10;i++)
std::cout << distr(generator) << '\n';
return 0;
}
我这样编译程序:
g++ gen_random.cpp
此后,当我执行程序时,应用程序崩溃并显示错误代码:(0xc000007b)
使用的g++版本->
g++(海湾合作委员会)14.2.0
观察到错误[下图]:
该程序使用 C++ 中的
<random>
库生成给定范围内的随机数。如果您在运行时遇到 0xc000007b 错误,请不要担心 - 这里有一个明确的修复方法。
编译后:
g++ gen_random.cpp
程序崩溃:
The application was unable to start correctly (0xc000007b).
此错误通常是由于架构不匹配(例如混合 32 位和 64 位二进制文件)或缺少运行时库而发生。
请按照以下步骤解决问题:
确保根据您的系统编译正确的架构:
对于 64 位系统,请使用:
g++ -m64 -o gen_random gen_random.cpp
对于 32 位系统,请使用:
g++ -m32 -o gen_random gen_random.cpp
此外,添加 C++ 标准标志以确保与
<random>
的兼容性:
g++ -std=c++11 -o gen_random gen_random.cpp
这是干净且有效的代码:
#include <iostream>
#include <random>
using namespace std;
int main()
{
const int range_from = 1; // Lower range
const int range_to = 4; // Upper range
// Initialize the random number generator
random_device rand_dev;
mt19937 generator(rand_dev());
uniform_int_distribution<int> distr(range_from, range_to);
// Generate 10 random numbers
for (int i = 0; i < 10; i++)
cout << distr(generator) << '\n';
return 0;
}
修复所有内容后,编译并运行:
g++ -std=c++11 -m64 -o gen_random gen_random.cpp
./gen_random
程序会输出 1 到 4 之间的 10 个随机数,例如:
2
3
1
4
4
2
3
1
...
-m64
或 -m32
确保二进制文件与您的系统架构匹配。-std=c++11
保证 <random>
支持。如果您按照这些步骤操作,0xc000007b错误将会消失,并且您的随机数生成器将完美工作。 🎉