2010-08-09 41 views
1

StackOverflow!用C++編譯問題 - C++/CLI - C#項目(Borland和VS特定組件)

今天的問題有點奇怪,但請耐心等待。任何意見/建議非常感謝!

我已經在一個項目上繼承了一箇舊的代碼庫,其中一些組件的歷史可追溯到2002年。這個項目沒有任何文檔,並且已經建立的構建的原始機器不再存在(硬驅動器失敗並且沒有可用的備份...)。該系統與機器人手臂交互並對其進行控制。我有一個完整的安裝和可執行文件安裝在測試機器上,使用適當的硬件。源代碼位於Subversion存儲庫中,但日誌消息很少,並且沒有提供實用建議。最近一月就已經開始工作了,但是開發者離開之前就離開了。它被部分重新編寫了一個新的基於C#的GUI。該項目由C++,C++/CLI和C#組成。它使用Boost和VTK。 簡而言之,我的問題是:軟件的控制部分存在客戶端關鍵錯誤,我無法構建項目。沒有可用的調試符號,並附上正在運行的EXE不起作用(可能的原因爲什麼在下面)。在我嘗試過的任何配置下,無論是C# 之前的版本還是最新的源代碼版本。

使問題變得更加複雜化,雖然我不確定這個問題,但是這個項目曾經是通過Borland C++ Builder V6構建的,並且已經被遷移到Visual Studio。它仍然包含Borland特定的組件,儘管其中大部分似乎都是有條件的。

我的經理髮誓,它會不是建立在VS下,並且必須在Borland中完全編譯。問題是我不能在沒有幾十個錯誤的情況下建立它。確實有Borland特定的組件(BPL文件),但我不知道它們是什麼,或者它們如何與項目結構相關。

我想知道是否需要在Borland和VS中構建,或者類似的東西。所以,我的問題是:是否有任何方法可以嘗試和推斷如何構建這個東西,還是隻是嘗試每個選項的問題,直到我擊中了正確的一個?

編輯:錯誤日誌如下。請注意:我很熟悉VS,但直到幾天前我才使用過Borland。 Noob警報!

  • Borland C++ Builder 6請求缺少幾個.bpi文件(對應的.bpl文件可從安裝在測試機器上)。

  • 執行預生成批處理文件似乎執行沒有錯誤。

  • 我已經下載了C++ Builder 2010的試用版,並且已經導入了該項目。對似乎是 正確的targer執行'Build All'我得到以下錯誤(在缺少文件的某些提示後......我試着設置鏈接器和編譯 選項來避免這些,但說實話,我不知道這是否是外部依賴或沒有安裝 Borland的組件)

    檢查項目依賴... Building LoggingDebug.cbproj(調試配置)

    [BCC32錯誤] is_array。HPP(40):模板參數E2430數量不 'is_array' 重複聲明匹配

    [BCC32錯誤] is_array.hpp(40):E2428模板必須是類或函數

    [BCC32錯誤] is_array .HPP(41):E2428模板必須是類或函數

    [BCC32錯誤]:模板參數E2430數量不 'is_array'

    [BCC32錯誤] is_array.hpp(41)重複聲明匹配is_array.hpp(42):E2430重新聲明'is_array'時模板參數的數量不匹配

    [BCC32錯誤] is_array.hpp(42):E2428模板必須是類或函數

    [BCC32錯誤] is_array.hpp(43):模板參數E2430數量不 'is_array' 重複聲明匹配

    [BCC32錯誤] is_array.hpp(43):E2428模板必須是類或函數

    [BCC32錯誤] ct_if.hpp(31):E2238多個聲明關於 'ct_and ::類型'

    [BCC32錯誤] ct_if.hpp(30):E2344早先聲明'ct_and :: type'

    [BCC32錯誤] function_base.hpp(157):爲 'function_return_type ::類型'

    [BCC32錯誤] function_base.hpp(152)E2238多個聲明: 'function_return_type ::類型' 的E2344原先的聲明

    [BCC32錯誤] alignment_of.hpp(37):類型空隙E2468值是不允許的

    [BCC32錯誤] alignment_of.hpp(56):E2450未定義結構 'alignment_of_hack'

    [BCC32錯誤] alignment_of.hpp(56):E2109不是允許的類型

    [BCC32錯誤] alignment_of.hpp(37):類型空隙E2468值是不允許的

    [BCC32錯誤] alignment_of.hpp(56):E2450未定義結構 'alignment_of_hack'

    [BCC32錯誤] alignment_of.hpp(56):E2109不允許使用的類型

    [BCC32錯誤] alignment_of.hpp(37):類型空隙E2468值是不允許的

    [BCC32錯誤] alignment_of.hpp (56):E2450未定義的結構'alignment_of_hack '

    [BCC32錯誤] alignment_of.hpp(56):E2109不允許使用的類型

    [BCC32錯誤] alignment_of.hpp(37):類型空隙E2468值是不允許的

    [BCC32錯誤] alignment_of.hpp(56):E2450未定義結構 'alignment_of_hack'

    [BCC32錯誤] alignment_of.hpp(56):E2109不允許使用的類型

    [BCC32錯誤]如果。HPP(131):E2270>預期

    [BCC32錯誤] if.hpp(131):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] type_with_alignment.hpp(271):E2238多聲明關於 'type_with_alignment < 2> ::類型'

    [BCC32錯誤] type_with_alignment.hpp(268):將E2344早些時候聲明 'type_with_alignment < 2> ::類型'

    [BCC32錯誤] not.hpp (40):E2015'aux'和'mpl _ :: aux'之間的歧義

    [BCC32錯誤] not.hpp(47):E2270>預期

    [BCC32錯誤] not.hpp(47):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤]空隙.HPP(71):E2270>預期

    [BCC32錯誤] void.hpp(71):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] void.hpp(72):E2270 >預計

    [BCC32錯誤] void.hpp(72): E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] or.hpp(50):E2015 '輔助' 和 'MPL _ ::輔助'

    [BCC32錯誤] or.hpp之間歧義( 62):E2270>預期

    [BCC32錯誤] or.hpp(62):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] eval_if.hpp(67):E2270>預期

    [BCC32錯誤] eval_if.hpp(67):E2321聲明未指定標籤或標識IER

    [BCC32錯誤] identity.hpp(40):E2270>預期

    [BCC32錯誤] identity.hpp(40):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] identity.hpp(41):E2270>預期

    [BCC32錯誤] identity.hpp(41):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] yes_no.hpp(35 ):E2238'yes_no_tag < 1> :: type'

    [BCC32錯誤] yes_no.hpp(30):的E2344早些時候聲明 'yes_no_tag < 1> ::類型'

    [BCC32錯誤] assert.hpp(79):E2270>預期

    [BCC32錯誤] assert.hpp(79):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] arg.hpp(21):E2270>預期

    [BCC32錯誤] ARG。HPP(28):E2321聲明沒有指定的標籤或標識符

    [BCC32錯誤] arg.hpp(28):E2228太多錯誤或警告消息

    失敗

    經過時間:00 :00:36.2

精確誤差的變化取決於哪一個版本我從倉庫拉源的,但考慮到這件事情顯然構建完美的大量錯誤的「在適當的條件下,」肯定意味着問題與外部依賴關係,親JECT設置等

+0

如果您給我們編譯器錯誤日誌,我們可能能夠幫助您找出錯誤。 – 2010-08-09 10:48:58

+0

@Merlyn:謝謝,這是一個很好的建議。我會把一些更多的信息:-) – HypersonicNinja 2010-08-09 11:01:35

回答

4

但開發商離開之前,我開始

硬盤驅動器失敗,沒有可用的

我不能讓它建立在沒有任何錯誤數十備份。

這都寫滿了它的軟件項目的災難。你可能被僱用在最後一次嘗試通過在這個問題上投擲肉來拯救投資。你是肉。這個機率很低,甚至當原始開發者放棄它時,你也能夠拯救它。

你需要得到管理團隊的承諾有任何機會都將這一好下場。堅持以下幾點:

  • 他們應該僱用至少一名原始的首席工程師,以獲得高得離譜的諮詢費,校準以便不!不是一種選擇。
  • 他們應該聘請數據恢復公司從故障磁盤獲取信息
  • 他們應該購買用於構建產品的所有原始工具。如果他們不再可以從供應商那裏看看拍賣網站,如eBay。做不是浪費你的時間與試用版。

如果你在他們看到任何猶豫,承諾這些步驟,讓地獄離開那裏。

+0

感謝您的理智檢查,漢斯。這裏的所有項目都是類似的:沒有文檔,開發人員放棄和離開,未完成,充滿了錯誤和不良做法。即使是存儲庫也是一團糟。幸運的是,我很快就關閉了,但是我希望在我去之前嘗試解決(有點)。無論如何,很高興聽到這不僅僅是我想知道我是否在一座小山上爬山! – HypersonicNinja 2010-08-09 14:08:05

1

我得到類似的錯誤,當我提出我的項目從2006年到Borland公司的Borland XE。解決方案是,我的代碼包含來自boost_1_34的文件。我從項目中刪除了包含路徑,並使用隨新IDE一起提供的boost庫。程序編譯成功