来自Code :: Blocks中另一个项目的未定义的func引用

时间:2015-12-29 16:48:00

标签: c++ codeblocks

我在CodeBlocks中有2个项目:

图灵机

MyExp.h

END as UPDATE

MyExp.cpp

class MyExp
{
public:
    MyExp() = default;
    double myExpFunc(double);
};

第二个项目: TuringMachineTests

的main.cpp

#include "MyExp.h"
double MyExp::myExpFunc(double x) //fixed the lack of MyExp::, but still doesn't work
{ 
    return x*x;
}

Boost东西正常工作(没有调用myExpFunc一切正常)。路径也是正确的(TuringMachineTest的目录在TuringMachine的目录中)。

但是编译器说:

#include "../include/MyExp.h"
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
BOOST_AUTO_TEST_CASE( my_test )
{
        MyExp me;
        int val = me.myExpFunc(5.0);

        BOOST_CHECK_EQUAL(val, 24);
}

听起来Tests项目找不到 MyExp.cpp (注意默认ctor被正常调用)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您在方法实施时忘记了班级名称:

double MyExp::myExpFunc(double x)
//     ^^^^^^^
{
    ...
}

此外,您必须将文件'MyExp.cpp'添加到项目中。该文件必须编译和链接。否则在链接期间会出现错误(对MyExp :: myExpFunc'的未定义引用)。