【发布时间】:2015-08-03 00:06:18
【问题描述】:
我正在尝试在 Windows 10 上使用 MinGW 编译 C++ 程序,但我不断收到以下错误(-Wall 和 -Werror 已激活):
过程入口点
_ZNSt7__cxx1112basic_stringlcSt11char_traitslcESalcEEC1EPKcRKS3_
无法加载到动态链接库中
[可执行文件的路径].exe
我发现的其他解决方案引用了外部 DLL,而不是可执行文件本身。
我是一个 C# 人,这对我来说完全陌生,所以如果这是一个非常简单的链接错误或类似的东西,请原谅我。
所有内容都在一个文件中(因为它将由在线自动评委评分):
#include <iostream>
#include <string>
enum Months { January, February, March, April, May, June, July, August, September, October, November, December };
std::string monthNames[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
int monthLengths[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int main(int argc, char const *argv[]);
bool isLeapYear(int year);
int daysInMonth(Months month, int year);
int main(int argc, char const *argv[])
{
std::cout << "Leap years:" << std::endl;
for (size_t i = 0; i < sizeof(monthNames)/sizeof(*monthNames); ++i)
{
std::cout << monthNames[i] << ": " << daysInMonth(static_cast<Months>(i), 2000) << std::endl;
}
std::cout << "Non-leap years:" << std::endl;
for (size_t i = 0; i < sizeof(monthNames)/sizeof(*monthNames); ++i)
{
std::cout << monthNames[i] << ": " << daysInMonth(static_cast<Months>(i), 1999) << std::endl;
}
std::cin.ignore();
return 0;
}
bool isLeapYear(int year)
{
return ((year & 3) == 0 && ((year % 25) != 0 || (year & 15) == 0));
}
int daysInMonth(Months month, int year)
{
if (isLeapYear(year) && month == February)
{
return 29;
}
return monthLengths[month];
}
【问题讨论】:
-
#include <string>. -
@Cheersandhth.-Alf Duly 指出,但它仍在发生。
-
哦。我投票关闭它。但我不知道如何删除该投票。好的,我会尝试重现。您使用的是哪个 MinGW 发行版、哪个版本以及您的构建命令是什么?
-
能否请您显示您使用的命令,包括所有标志?另外,您使用的是什么版本的 GCC(通过
gcc --version获取)? -
@JoachimPileborg 请参阅下面我的回答。
标签: c++ dll g++ mingw stdstring