对于我的生活,我无法弄清楚如何解决这个链接问题。我设置了一个简单的#include,我仍然得到同样的错误。我知道IDE了解文件已链接,因为如果我移动头文件,我会收到各种其他错误。
对于我使用Propellor-GCC SimpleIDE
的记录这是整个项目:
simplelink.cpp
#include "testclass.h"
int main(void)
{
TestClass test1 = TestClass();
return test1.value;
}
testclass.h(与simplelink.cpp在同一目录中)
#ifndef _MYSIMPLELINK_
#define _MYSIMPLELINK_
struct TestClass {
TestClass();
int value;
};
#endif
testclass.c
#include "testclass.h"
TestClass::TestClass() {
value = 13;
}
这是我得到的输出:
propeller-elf-gcc.exe -v GCC 4.6.1 (propellergcc_v1_0_0_2162) propeller-elf-c++ -I . -L . -o cmm/simplelink.elf -Os -mcmm -Wall
-m32bit-doubles -fno-exceptions -fno-rtti simplelink.cpp
C:\Users\Virtual\AppData\Local\Temp\cc81YpVR.o: In function `_main':
(.text+0x9): undefined reference to `TestClass::TestClass()'
collect2: ld returned 1 exit status
Done. Build Failed!
Check source for bad function call or global variable name `TestClass::TestClass()'
答案 0 :(得分:0)
testclass.c
应为testclass.cpp
。
您还需要将simplelink
和testclass
链接到您的可执行文件中。将testclass.cpp
附加到构建字符串会执行此操作,尽管您可能希望让makefile首先为每个.cpp构建目标文件,然后链接目标文件。
答案 1 :(得分:-1)
当您需要的是struct
时,您尝试将构造函数放入class
。
将TestClass定义更改为:
class TestClass
{
public:
TestClass();
private:
int value;
}
然后在main
中,用
TestClass test1 = new TestClass();
此外,正如其他回复中所述,将testclass.c
重命名为testclass.cpp
并在链接之前构建所有.cpp
个文件。