来自不同项目的C ++ LNK 2019,但在同一解决方案中

时间:2012-04-05 19:06:48

标签: c++

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

我无法理解为什么会这样。

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

示例:

创建了一个日期proj(包含datetime.h链接,其中包含date.h和time.h,工作精细) 创建了一个power pro - 只存储float变量。 创建了一个输入项目,用于存储上述两个项目的日期和功率。 但是一旦我声明了输入输入;它有链接器问题<​​/ p>

源代码如下.. 的 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

input.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;
}

1 个答案:

答案 0 :(得分:0)

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

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

在VS2010中,转到配置属性 - &gt;链接器 - &gt;常规 - &gt;其他库目录并指定库路径。然后转到Configuration Properties-&gt; Linker-&gt; Input-&gt; Additional Dependencies并指定lib的名称(Power.lib?)

希望有所帮助。如果这样可以解决您的问题,请告诉我。