我有一个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”。
我可以从同一个库中创建一个接口的实例,但我无法创建实现该接口的类的实例。即;
void foobar()
{
IMyClass a; // Having this in the application works.
MyClass b; // Segfault if this is in.
}
正如您从上面看到的,代码甚至不需要为应用程序调用segfault。
我使用Netbeans 6.7.1和GCC 4.3.2。
现在,我假设有链接的图书馆有问题,但我不知道是什么。我也链接到其他库(全部静态链接)。上面的类来自第一个链接库(至少在列表中是第一个)。如果我从第二个列出的库创建一个类的实例,一切运行良好。
这有可能是这个问题是相似的(或相关)到我的其他问题:https://stackoverflow.com/questions/1844190/linking-with-apache-xml-security-causes-unresolved-references
没有人有可能是什么问题,有什么建议?
我有所有的源代码,所以如果确实如此,这应该不是问题。我会看一下。 – 2009-12-07 10:09:44
Ahhhhhhhh。找到错误的代码;对swscanf的调用导致出错。 (我不知道代码有什么问题,但这是不同的时间。) – 2009-12-07 11:28:32