0

我正在尝试创建一个项目来调用另一个项目,所以它应该允许我从另一个项目调用头文件,但是一旦我调用,就会出现 lnk 错误 2019。

我不明白为什么会这样。

最初我认为这是编译器的问题。但慢慢地我意识到,这个项目不能相互联系。任何可以帮助我克服问题的解决方案。

例子 :

创建了一个日期项目(其中包含与 date.h 和 time.h 工作正常的 datetime.h 链接)创建了一个电源项目 - 仅存储浮点变量。创建了一个输入项目来存储上述两个项目的日期和功率。但是一旦我声明了一个输入输入;它有链接器问题

源代码如下.. Input.h

#ifndef INPUT_H
#define INPUT_H
//#include "../Date/DateTime.h"
#include "../Power/Power.h"

class Input{
public:
    Input();
    //{
        /*DateTime datetime;
        SetDateTime(datetime);*/
    //}

    friend ostream& operator << (ostream &output, const Input &value);
    friend istream & operator>>( istream &input, Input &value );
    void SetPower(Power power){
        mpower = power;
    }
    Power GetPower(){
        return mpower;
    }
    //get and set method of variable DateTime
    /*void SetDateTime(DateTime datetime);
    DateTime GetDateTime();*/
private:
    string test;
    Power mpower;
    //DateTime m_datetime;
};

#endif

输入.cpp 文件

ostream& operator << (ostream &output, const Input &value){
    output<<"test";
    //<<value.test;
    //output<<value.m_datetime<<endl;
    return output;
}
istream & operator>>( istream &input, Input &value ){
    //input>>value.m_datetime;
    return input;
}
4

1 回答 1

0

这是问题的描述(http://msdn.microsoft.com/en-us/library/799kze2z%28v=vs.100%29.aspx)“函数'function'中引用的未解析的外部符号'symbol'”

它就是这样。您需要链接实际定义符号/对象的库或实现在哪里。通常头文件仅包含声明,但链接器在编译后也需要您的实现,因为您正在引用主项目中的那些(您的主项目正在使用这些对象)。因此链接器无法链接您的代码。

在 VS2010 中,转到 Configuration Properties->Linker->General->Additional Library Directories 并指定您的库路径。然后转到 Configuration Properties->Linker->Input->Additional Dependencies 并指定 lib 的名称(Power.lib ?)

希望有帮助。让我知道这是否能解决您的问题。

于 2012-04-05T19:20:00.200 回答