2017-08-16 27 views
2

我有問題的註冊和在Windows 7 X64的使用動態庫,DLL編譯的64位版本,但編譯器日誌輸出:有問題的註冊和使用一個64位的C++編寫ATL動態庫

Error MSB3073: The command "RegSvr32 /S "...\x64\Debug\xxxxx.dll" exited with code 3.

但是,當我構建32位版本的dll時,編譯器日誌輸出RegSvr32命令成功。

我已經在x86和x64構建配置中將Linker >> General >> Register Output設置爲No

我試圖運行在64位的DLL的RegSvr32的64位和32位版本(沒有無聲模式),但它具有以下錯誤響應:使用依賴Walker和

The module "xxxxx.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 module could not be found.

我檢查據報道有超過100個dll丟失,所以我不能在這裏顯示它們。其中一些是:

API-MS-WIN-CORE-COM-L1-1-1.DLL 
API-MS-WIN-CORE-DATETIME-L1-1-1.DLL 
API-MS-WIN-CORE-DEBUG-L1-1-1.DLL 
API-MS-WIN-CORE-ERRORHANDLING-L1-1-1.DLL 
API-MS-WIN-CORE-FILE-L1-2-1.DLL 
... 
WLANUTIL.DLL 
WLDAP32.DLL 
WTSAPI32.DLL 
XMLLITE.DLL 

的Dependency Walker與開DLL:

Dependency Walker with opened dll

我想知道什麼,只是DLL的64位版本的原因不能用了RegSvr32註冊。

任何幫助,非常感謝解決這個問題。

UPDATE 1

試圖與此動態庫的結果在下面的錯誤(32位和64位版本)中運行的應用:

The program can't start because api-ms-win-core-errorhandling-l1-1-1.dll is missing from your computer. Try reinstalling the program to fix this problem.

所有可再發行包目前我安裝:

Redistributables those already installed

是否有六sual C++ redistributables我必須安裝才能解決這個問題?

更新2

我發現更多信息api-ms-win-core-errorhandling-l1-1-1.dllhere,並試圖用這個動態庫鏈接WindowsApp.lib,但它甚至沒有解決的問題。

更新3

我跑了系統文件檢查器,它給了我下面的輸出,因爲我認爲應該:

Windows Resource Protection did not find any integrity violations.

回答

0

我終於通過從x86和x64版本的項目中鏈接的.lib文件中刪除mincore.lib來解決該問題,我最近鏈接到使用GetFileVersionInfoSize API函數。

1
  1. 走進你想要的DLL項目屬性登記
  2. 轉到配置屬性>>調試
  3. 在「命令」下,點擊向下的小箭頭d選擇「regsvr32。EXE」
  4. 在‘命令參數’類型‘$(的TargetName)’
  5. 在你的DLLMain
  6. 現在調試的DLL將斷點的地方(右鍵單擊Solution Explorer中的DLL項目,然後選擇‘調試’)

如果你到了你的DLL main,你可以從那裏調試,直到它失敗,如果你不這樣做,你應該看看輸出窗口看到任何相關的消息,你可能需要改變你的輸出窗口過濾器右鍵單擊輸出窗口,檢查所有類別的消息,確保它給你所有的東西,然後再調試。

這應該至少告訴你你失敗的地方。尋找模塊負載故障等

編輯添加 - 您可以嘗試通過刪除「/ S」來更改構建步驟。這是「無聲」模式,在這種情況下,您希望看到消息。

+0

我試過你說的,但我沒有解決問題。我認爲DLLMain沒有任何問題。 – GTAVLover

相關問題