ERROR: LNK 2019 : unresolved external symbol _imp_CrtDbgReportw in Visual Studio
ERROR: LNK 2019 : unresolved external symbol _imp_CrtDbgReportw in Visual Studio
我编写了一个程序,在出现相应的分隔符时拆分字符串。但是发生了一个不同的错误,例如:
Error 1 error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: char const & __thiscall std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > >::operator*(void)const " (??D?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@QBEABDXZ) Source.cpp Using Object_Type Input
我在 dev c++ 中测试了相同的程序,它工作正常,但在 visual studio 中出现了这些类型的问题。
我的程序:
#include <string>
#include <iostream>
#include<tchar.h>
using namespace std;
#pragma comment (lib, "ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
string s = "Enter a line of text,\n next line\n as the\n delimiter: ";
string delimiter = "\n";
size_t pos = 0;
string token;
while ((pos = s.find(delimiter)) != std::string::npos) {
token = s.substr(0, pos);
std::cout << token << std::endl;
s.erase(0, pos + delimiter.length());
}
std::cout << s << std::endl;
return 0;
}
我什至尝试删除 header 并将 main() 函数更改为 int main() 和 int main(void)。但是在visual studio中出现同样的错误。请任何人帮助我。
CrtDbgReport
在 CRT (C Run-time Library) 的调试版本中定义。您很可能正在构建调试配置,但链接的是 CRT 的发布版本。
检查属性 -> C/C++ -> 代码生成 -> 运行时库。
另一种可能性是您正在构建发布配置,但有一些定义导致 string
在调试配置中构建。最简单的例子是:
#define _DEBUG
#include <string>
即使选择了正确的运行时库,在发布版中构建您的示例也会导致此问题。
我编写了一个程序,在出现相应的分隔符时拆分字符串。但是发生了一个不同的错误,例如:
Error 1 error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: char const & __thiscall std::_String_const_iterator<class std::_String_val<struct std::_Simple_types<char> > >::operator*(void)const " (??D?$_String_const_iterator@V?$_String_val@U?$_Simple_types@D@std@@@std@@@std@@QBEABDXZ) Source.cpp Using Object_Type Input
我在 dev c++ 中测试了相同的程序,它工作正常,但在 visual studio 中出现了这些类型的问题。
我的程序:
#include <string>
#include <iostream>
#include<tchar.h>
using namespace std;
#pragma comment (lib, "ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
string s = "Enter a line of text,\n next line\n as the\n delimiter: ";
string delimiter = "\n";
size_t pos = 0;
string token;
while ((pos = s.find(delimiter)) != std::string::npos) {
token = s.substr(0, pos);
std::cout << token << std::endl;
s.erase(0, pos + delimiter.length());
}
std::cout << s << std::endl;
return 0;
}
我什至尝试删除 header 并将 main() 函数更改为 int main() 和 int main(void)。但是在visual studio中出现同样的错误。请任何人帮助我。
CrtDbgReport
在 CRT (C Run-time Library) 的调试版本中定义。您很可能正在构建调试配置,但链接的是 CRT 的发布版本。
检查属性 -> C/C++ -> 代码生成 -> 运行时库。
另一种可能性是您正在构建发布配置,但有一些定义导致 string
在调试配置中构建。最简单的例子是:
#define _DEBUG
#include <string>
即使选择了正确的运行时库,在发布版中构建您的示例也会导致此问题。