【发布时间】:2019-09-23 15:46:52
【问题描述】:
我有两个 .so 文件,我试图从一个 .so 到另一个调用参数化构造函数。我收到链接器错误。这是一段代码。
ABC.h
class ABC
{
ABC();
ABC(int i);
};
ABC.cpp
ABC::ABC()
{
//do something
}
ABC::ABC(int i)
{
//do something.
}
XYZ.cpp
#include "ABC.h"
void XYZ1()
{
ABC abc(); // this passes
}
void XYZ1(int i)
{
ABC abc(i); // This results in linker error when I run XYZ's executable
}
void main()
{
XYZ1();
}
请注意,我使用的是 netbeans IDE。 我注意到参数化构造函数会导致错误,默认构造函数不会抛出任何错误。我需要在 netbeans IDE 中进行任何设置吗?
【问题讨论】:
-
最麻烦的解析会将
ABC abc();视为函数声明——已声明但未定义。也许以下ABC abc(i);与此混淆?尝试将ABC abc();替换为ABC abc;或ABC abc{};。不确定这是否会成功,但值得一试。 -
请发布您是如何编译代码的;以及您正在运行的实际代码(例如,您的
ABC.h错过了;)。 -
@Fureeish 即使只有一个没有默认构造函数的参数化构造函数也会导致链接器错误
-
你是如何链接代码的?
-
@Fureeish 我正在使用 LDLIBSOPTIONS 选项,并且我在 makefile 中提到了 so 名称。
标签: c++ linker-errors netbeans-8