2010-08-20 51 views
0

在詢問此問題時,我正在尋找更好地瞭解情況或最好是解決方案。使用GNU鏈接器鏈接到VC++編譯庫時出現的名稱重疊問題

我創建了C++代碼,我希望能夠使用Eclipse CDT IDE而不是Visual Studios(我的工作區更適合Eclipse)。這意味着,實際上,我必須使用GNU工具鏈來編譯我的代碼。對於手頭的項目,我必須鏈接到一個名爲HyDE.lib的庫,該庫是使用Visual Studios編譯器編譯的。當然,我遇到的問題是GNU鏈接器在HyDE中找不到合適的符號,因爲(我認爲)兩種編譯器都使用不同的名稱修改方案。

那麼我該如何解決這個問題?

當前的想法:

  • 最明顯的事情是重新編譯HyDE.lib與GNU工具鏈。這被證明比它的價值更復雜。然而,我還沒有在這裏調查過一條途徑。我們有一個cmake文件,據說可以構建到unix ...有什麼方法可以讓cmake代替使用Cygwin GNU?我對cmake一無所知(關於make很少),所以提及好的信息會很好。
  • 我可以將Eclipse CDT連接到Window編譯器工具。是的,但最好的我可以告訴這並不容易,我可能會失去調試甚至代碼完成。然後是Eclipse Wascana,但是我閱讀了最近的一篇博客,其中指出Wascana社區是有效的。
  • 是否有任何類型的庫demangler-remangler?我想象一個程序,我也會給一個Windows編譯庫,然後程序會挑選符號,對它們進行demangle,然後創建一個具有相同符號的庫,但是會以GNU方式破壞。在這一點上,我正在製作一些東西,所以也許有人可以幫助我更好地理解這裏的名字。

任何想法?

+0

你使用Visual STudio? – 2010-08-20 22:42:21

+0

@Martin - 真的嗎?怎麼樣? – JnBrymn 2010-08-23 19:17:32

回答

0

除非您將大部分代碼放在HyDE.lib中,而extern "C"塊,否則最好的辦法就是用G ++重新編譯它。即使你把它放在extern "C"塊中,我仍會推薦用G ++編譯它,因爲它通常(但不總是)比MSVC對標準有更好的支持。

0

作爲替代方法,將庫的編譯完成爲.dll文件並使用它。只要確保在extern "C"區塊中輸入入口點即可。

+0

盲人,你不會是盲目的嗎?如果是這樣,我可能有關於你的編程設置的問題? – JnBrymn 2010-08-21 01:09:24

+0

不,我不盲目,我的「處理」是一個長長的故事<。< – Blindy 2010-08-21 08:19:07