【发布时间】:2013-06-28 22:48:25
【问题描述】:
我有一个相当不寻常的问题。我正在尝试这样做:
char *content = new char[10000];
std::cin.read(content, 10000);
我收到以下链接器错误(很奇怪,因为代码在几周前编译良好,并且尚未修改):
Error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::basic_istream<char,struct std::char_traits<char> > & __thiscall std::basic_istream<char,struct std::char_traits<char> >::read(char *,__int64)" (__imp_?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@PAD_J@Z) main.obj
我验证了我在项目属性中链接了所有必需的依赖项,验证了我设置了 /MT 等等。该项目在几周前编译得很好——从那时到现在我唯一做的就是更新 VS2012。这是我的包含。
#include <stdlib.h>
#ifdef _WIN32
#include <process.h>
#else
#include <unistd.h>
extern char ** environ;
#endif
#include "fcgio.h"
#include "fcgi_config.h"
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/algorithm/string.hpp>
【问题讨论】:
-
检查项目设置,看看它是否配置为忽略默认库。
-
据我所知,您的包含不包括
iostream。要么,要么你使用gcc而不是g++来编译你的代码。 -
您的文件是否以“.c”结尾。似乎已调用 C 编译器来编译您的程序。
-
您的
read函数调用有错误。应该是std::cin.read(content, 10000);,content参数前面没有星号。 -
感谢各位的帮助。它没有忽略默认库,包括 iostream 不起作用,并且文件以 .h 结尾。我很茫然。