2011-12-21 28 views
2

這是我第一次在這個論壇上寫作,我希望有人能幫助我。我一直在網上搜索,但沒有找到任何與我的問題有關的答案。用非常大的文件創建一個dll

我有一個非常大的文件(大約25000行)與成千上萬的定義必須由另一個文件中使用

所有這些文件(約600更多的人)被轉換使用特別的.c文件工具。我幾乎肯定這種轉換是非常重要的。

如果我用所有這些文件創建一個文件,沒有問題,一切正常。不幸的是,當我嘗試訪問非常大的文件時,我需要一個崩潰的.dll文件。

我檢查它的.obj文件是否大於65MB,所以我添加了編譯器命令/ bigobj,據我所見在互聯網上,但它沒有解決問題。

我還檢查,當訪問大型文件時,我加入這兩個文件(這是不可能在我的發展)

我使用的Visual 2008

,因爲一切都工作的很好的問題發生莫非它與編譯爲C(/ TC)還是C++(/ TP)代碼有關? .exe和.dll有什麼區別可能導致我的程序崩潰?

有什麼想法嗎?

在此先感謝

+0

你的問題並不十分清楚。什麼崩潰(編譯器,鏈接器,你的應用程序)?它以什麼方式崩潰(例如,是否有錯誤信息)?所有這些都有助於給出答案 – Stewart 2011-12-21 10:21:33

+0

哦,我很抱歉。當我使用DLL(一個.exe文件使用這個.dll)時它崩潰。我有典型的Windows錯誤。當我嘗試調試錯誤時,似乎缺少一個定義的引用(當不應該將指針設置爲空時),此指針應該從非常大的文件中獲取信息。我不知道我是否清楚自己,這有點難以解釋,對不起... – dawita 2011-12-21 10:33:03

+0

它可能與大文件無關。只需嘗試使用所有需要訪問的函數名稱正確定義.def文件即可。 – 2011-12-21 12:22:22

回答

2

事實上,如果沒有這些代碼並沒有太多可說...(壽不知道是否會有人有閱讀600耐心文件每25,000行代碼:))

作爲建議,在調試模式下重新生成exe和dll,從MSVC運行exe,然後在你知道它崩潰的地方放置一個斷點。接下來,在從監視窗口獲得地址後,在變量上設置一個數據斷點。假設應用程序做了正確的事情,然後指針被設置,但在路上丟失;這意味着它應該被觸發兩次。 或者,嘗試斷言檢查。

另一種情況是因爲變量是不穩定的。 另一種情況是在值從一個臨時的返回值和丟失... 最後但並非最不重要的,該值從未因爲錯誤\惡劣的條件下...

如果你的問題是偶們不是缺少的值,只是做一個空檢查並返回調用,如果你真的想避免複雜化,但是,我會建議你找到爲什麼沒有設置值。你的選擇。