我有一個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