c ++向量推回错误

时间:2012-09-27 19:12:28

标签: c++ vector fstream push-back

每次尝试使用Visual C ++ 2008调试时都会收到错误

#include <iostream>
#include <vector>
#include <string>
#include <fstream>

using namespace std;

void load(const char* filename) {
    vector <string*> vec;
    ifstream in(filename);
    char buffer[256];
    while(!in.eof()) {
        in.getline(buffer, 256);
        vec.push_back(new std::string(buffer));
    }
}

int main(int argc, char* args[]) {
    cin.get();
    return 0;
}

得到此错误

Compiling...
main.cpp
Linking...
main.obj : error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: __thiscall std::_Vector_const_iterator,class std::allocator > *,class std::allocator,class std::allocator > *> >::_Vector_const_iterator,class std::allocator > *,class std::allocator,class std::allocator > *> >(class std::basic_string,class std::allocator > * *,class std::_Container_base_secure const *)" (??0?$_Vector_const_iterator@PAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@PAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@QAE@PAPAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@PBV_Container_base_secure@1@@Z)
E:\blabla\Debug\test2.exe : fatal error LNK1120: 1 unresolved externals

我做错了什么?

1 个答案:

答案 0 :(得分:4)

看起来您正在构建项目的调试版本,但是您要链接到非调试版本的C-Runtime DLL。您可以在以下位置查看:

[Project] -> Properties -> C/C++ --> Code Generation --> Runtime Library

运行时库应列为:“多线程调试DLL(/ MDd)”,用于调试版本。

实际上,您应该发现项目构建为“Release”,因为CrtDbgReportW在发布版本中没有被std::vector调用,因此不需要在链接时找到该符号。 / p>