2010-05-23 61 views
1

當我嘗試註冊使用regsvr32創建的.dll時,出現奇怪的問題。未能使用regsvr32註冊.dll - 僅在發佈版本

在開發過程中一切正常,調試版本註冊並正常工作。現在我想創建一個發行版本,但該版本不再註冊。

REGSVR32想出了以下錯誤:

The module "mpegsplitter.dll" failed to load. 

Make sure the binary is stored at the specified path or 
debug it to check for problems with the binary or 
dependent .DLL files. 

The specified procedure could not be found. 

一些研究把我帶到了依賴學步車,它不告訴我這個

Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module. 

它也確實表現出對「CRTDLL的依賴。 DLL「的調試版本沒有(功能視圖顯示soem函數,通常應該在ole32.dll中),它是紅色的。

到目前爲止這麼好,我猜它與某些依賴步行者在那裏顯示的內容有關。

但我從哪裏出發呢?我如何解決它? 任何幫助將不勝感激,這已經讓我忙了好幾個小時了。

謝謝!

回答

0

我修好了。它實際上是由我包含的某些mingw庫的順序造成的,它與ffmpeg鏈接。哦,多麼奇怪。

+0

您是如何解決訂購問題的?我想我可能會遇到一些與我正在加載的外部庫有關的類似問題。 – funseiki 2012-11-02 15:59:51

0

是否有可能使用_ATL_MIN_CRT編譯調試版本,但發行版本不是?您也可以使用Minimize CRT Use in ATL項目屬性進行設置。

+0

未設置。我試圖將它作爲一個定義添加,並且只是在它不再支持的情況下大吼大叫。這是VC08,猜測它是一個「老」的東西。沒有看到UI選項。 – Hendrik 2010-05-23 16:30:25

+0

我的C++知識可能有點過時了......我建議比較其他項目選項並查看是否可以看到任何差異。特別是如果其中一個具有'/ MD'或'/ MT'或類似的,而另一個則不是。最容易比較的是如果您查看屬性中的「命令行」頁面。 – 2010-05-23 16:53:15

+0

這是我的想法,我有另一個項目,我基於這一個,並且設置是相同的,但那個工程。 也許某些奇怪的指令是通過某個頭部某個地方導入的? 如果有人更習慣於依賴walker和喜歡,我可以提供編譯的.dll。 – Hendrik 2010-05-23 17:05:31

2

我有同樣的問題。當我比較Release和Debug模式下的「命令行」(在項目屬性 - >鏈接器中)之間的不同之處時,我發現釋放模式的「優化」選項(在項目屬性 - >鏈接器中)不。 釋放模式下鏈接器優化的車削解決了問題