簡體   English   中英

與Windows投影文件系統DLL / LIB鏈接

[英]Linking with Windows Projected File System DLL/LIB

我正在嘗試構建RegFS示例,以更好地了解Windows Projected File System。 我的代碼在構建時沒有警告,但出現了動態鏈接錯誤。 下面是一個示例錯誤,下面是導致該錯誤的代碼。

“過程入口點PrjWritePlaceholderInfo不在動態鏈接庫中。”

HRESULT VirtualizationInstance::WritePlaceholderInfo(
    LPCWSTR relativePath,
    PRJ_PLACEHOLDER_INFO* placeholderInfo,
    DWORD length
) {
    return PrjWritePlaceholderInfo(
        _instanceHandle,
        relativePath,
        placeholderInfo,
        length);
}

我確定鏈接時做錯了什么。 在[項目屬性頁]>鏈接器>輸入下,我將“ ProjectedFSlib.lib”添加到“其他依賴項”之前。

這是我第一次使用Visual Studio,默認情況下未鏈接庫,而且我一直找不到有關如何在Windows SDK中定位和鏈接庫的說明。

謝謝你的幫助!

編輯:

DUMPBIN輸出為:

Dump of file ProjectedFSLib.lib

File Type: LIBRARY

 Exports

   ordinal    name

              PrjAllocateAlignedBuffer
              PrjClearNegativePathCache
              PrjCloseFile
              PrjCommandCallbacksInit
              PrjCompleteCommand
              PrjConfigureVolume
              PrjConvertDirectoryToPlaceholder
              PrjCreatePlaceholderAsHardlink
              PrjDeleteFile
              PrjDetachDriver
              PrjDoesNameContainWildCards
              PrjFileNameCompare
              PrjFileNameMatch
              PrjFillDirEntryBuffer
              PrjFreeAlignedBuffer
              PrjGetOnDiskFileState
              PrjGetVirtualizationInstanceIdFromHandle
              PrjGetVirtualizationInstanceInfo
              PrjMarkDirectoryAsPlaceholder
              PrjOpenFile
              PrjReadFile
              PrjStartVirtualizationInstance
              PrjStartVirtualizationInstanceEx
              PrjStartVirtualizing
              PrjStopVirtualizationInstance
              PrjStopVirtualizing
              PrjUpdateFileIfNeeded
              PrjUpdatePlaceholderIfNeeded
              PrjWriteFile
              PrjWriteFileData
              PrjWritePlaceholderInfo
              PrjWritePlaceholderInformation
              PrjpReadPrjReparsePointData

Summary

      D8 .debug$S
      14 .idata$2
      14 .idata$3
       8 .idata$4
       8 .idata$5
      14 .idata$6

可執行文件導入的DUMPBIN結果為:

Dump of file regfs.exe

File Type: EXECUTABLE IMAGE

  Section contains the following imports:

    PROJECTEDFSLIB.dll
             14006D2A0 Import Address Table
             14006D9E0 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                          1E PrjWritePlaceholderInfo
                          1D PrjWriteFileData
                          19 PrjStopVirtualizing
                          17 PrjStartVirtualizing
                           C PrjFileNameMatch
                           D PrjFillDirEntryBuffer
                           E PrjFreeAlignedBuffer
                           0 PrjAllocateAlignedBuffer
                          11 PrjGetVirtualizationInstanceInfo
                          12 PrjMarkDirectoryAsPlaceholder
                           B PrjFileNameCompare

    KERNEL32.dll
             14006D098 Import Address Table
             14006D7D8 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                         389 IsProcessorFeaturePresent
                         382 IsDebuggerPresent
                         466 RaiseException
                         1B1 FreeLibrary
                          BA CreateDirectoryW
                         116 DeleteFileW
                         59A TerminateProcess
                         4BD RemoveDirectoryW
                         621 WriteFile
                          C2 CreateFile2
                          86 CloseHandle
                         267 GetLastError
                         3F2 MultiByteToWideChar
                         21D GetCurrentProcess
                         57B SetUnhandledExceptionFilter
                         5BC UnhandledExceptionFilter
                         4E1 RtlVirtualUnwind
                         4DA RtlLookupFunctionEntry
                         4D3 RtlCaptureContext
                         477 ReadFile
                         2B5 GetProcAddress
                         5DD VirtualQuery
                         2BB GetProcessHeap
                         60D WideCharToMultiByte
                         450 QueryPerformanceCounter
                         21E GetCurrentProcessId
                         2F0 GetSystemTimeAsFileTime
                         36C InitializeSListHead
                         352 HeapFree
                         34E HeapAlloc
                         27E GetModuleHandleW
                         2D7 GetStartupInfoW
                         222 GetCurrentThreadId

    ADVAPI32.dll
             14006D000 Import Address Table
             14006D740 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                         299 RegQueryValueExW
                         293 RegQueryInfoKeyW
                         28C RegOpenKeyExW
                         27D RegEnumValueW
                         27A RegEnumKeyExW
                         25B RegCloseKey
                         281 RegGetValueW

    ole32.dll
             14006D438 Import Address Table
             14006DB78 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                          2A CoCreateGuid

    MSVCP140D.dll
             14006D228 Import Address Table
             14006D968 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                          A5 ??1_Lockit@std@@QEAA@XZ
                          6D ??0_Lockit@std@@QEAA@H@Z
                         296 ?_Xlength_error@std@@YAXPEBD@Z
                         297 ?_Xout_of_range@std@@YAXPEBD@Z

    VCRUNTIME140D.dll
             14006D360 Import Address Table
             14006DAA0 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                          3C memcpy
                          3D memmove
                           1 _CxxThrowException
                           E __CxxFrameHandler3
                          36 _purecall
                          3B memcmp
                          21 __std_exception_copy
                          22 __std_exception_destroy
                           8 __C_specific_handler
                           9 __C_specific_handler_noexcept
                          25 __std_type_info_destroy_list
                          2E __vcrt_GetModuleFileNameW
                          2F __vcrt_GetModuleHandleW
                          31 __vcrt_LoadLibraryExW

    ucrtbased.dll
             14006D498 Import Address Table
             14006DBD8 Import Name Table
                     0 time date stamp
                     0 Index of first forwarder reference

                         2B6 _register_thread_local_exe_atexit_callback
                          B5 _configthreadlocale
                         2CE _set_new_mode
                          4D __p__commode
                         11D _free_dbg
                         52C strcpy_s
                         528 strcat_s
                          68 __stdio_common_vsprintf_s
                         2C2 _seh_filter_dll
                          B6 _configure_narrow_argv
                         171 _initialize_narrow_environment
                         172 _initialize_onexit_table
                          9F _c_exit
                          E5 _execute_onexit_table
                          C2 _crt_atexit
                          C1 _crt_at_quick_exit
                         54B terminate
                         39C _wmakepath_s
                         3B8 _wsplitpath_s
                         564 wcscpy_s
                          A4 _cexit
                         48D getchar
                          60 __stdio_common_vfwprintf
                          35 __acrt_iob_func
                           4 _CrtDbgReport
                         567 wcslen
                         176 _invalid_parameter
                          4B __p___wargv
                          49 __p___argc
                         2CB _set_fmode
                          EA _exit
                         450 exit
                         175 _initterm_e
                         174 _initterm
                         13E _get_initial_wide_environment
                         173 _initialize_wide_environment
                          B7 _configure_wide_argv
                          5B __setusermatherr
                         2C6 _set_app_type
                         561 wcscmp
                           5 _CrtDbgReportW
                         4D8 malloc
                         2B5 _register_onexit_function
                          A1 _callnewh
                         2C3 _seh_filter_exe

  Summary

        1000 .00cfg
        1000 .data
        2000 .idata
        1000 .msvcjmc
        5000 .pdata
       17000 .rdata
        1000 .reloc
        1000 .rsrc
       37000 .text
       18000 .textbss

顯而易見,它從PROJECTEDFSLIB.dll導入了所有必要的功能

將ProjectedFSLib.lib添加到您的庫中或添加:

#pragma comment(lib, "ProjectedFSLib.lib")

在您的代碼行中。 另外,請確保您使用的SDK版本是10.0.17763.0。 如果您使用的是mingw,並且尚未提供該庫,也不會令我感到驚訝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM