我有一个 C++ 应用程序(大大缩短,如下所示);
#include <iostream>
#include "MyClass.h"
void foobar()
{
MyClass a;
}
int main(int argc, char** argv)
{
std::cout << "Hello world!\n";
return 0;
}
其中“MyClass”在静态链接库 (.a) 中定义。
然而,这个应用程序在启动的那一刻就出现了 Segfaults,我从来没有进入“Hello world”。
我可以从同一个库中创建一个接口的实例,但我不能创建一个实现该接口的类的实例。IE;
void foobar()
{
IMyClass a; // Having this in the application works.
MyClass b; // Segfault if this is in.
}
正如您从上面看到的,甚至不需要调用代码来让应用程序发生段错误。
我正在使用 Netbeans 6.7.1 和 GCC 4.3.2。
现在,我假设库的链接有问题,但我不知道是什么。我也在其他库中链接(都是静态链接的)。上面的类来自第一个链接库(至少在列表中的第一个)。如果我从第二个列出的库中创建一个类的实例,一切运行正常。
该问题可能与我的其他问题相似(或相关):https ://stackoverflow.com/questions/1844190/linking-with-apache-xml-security-causes-unresolved-references
有没有人对可能是什么问题有任何建议?