首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与Windows Projected File System DLL/LIB链接

与Windows Projected File System DLL/LIB链接
EN

Stack Overflow用户
提问于 2018-12-10 14:53:47
回答 2查看 584关注 0票数 2

我正在尝试构建RegFS sample,以便更好地理解Windows Projected文件系统。我的代码是在没有警告的情况下构建的,但是我得到了动态链接错误。下面是一个示例错误,代码就在下面导致它。

“在动态链接库中找不到过程入口点PrjWritePlaceholderInfo。”

代码语言:javascript
运行
复制
HRESULT VirtualizationInstance::WritePlaceholderInfo(
    LPCWSTR relativePath,
    PRJ_PLACEHOLDER_INFO* placeholderInfo,
    DWORD length
) {
    return PrjWritePlaceholderInfo(
        _instanceHandle,
        relativePath,
        placeholderInfo,
        length);
}

我确信我在链接的时候做错了什么。在项目属性页>链接器>输入下,我将"ProjectedFSlib.lib“前置为"Additional Dependencies”。

这是我第一次在Visual Studio中使用默认情况下未链接的库,我一直无法找到有关如何在Windows SDK中定位和链接库的说明。

谢谢你的帮忙!

编辑:

DUMPBIN输出为:

代码语言:javascript
运行
复制
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将导致:

代码语言:javascript
运行
复制
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导入了所有必要的函数

EN

Stack Overflow用户

发布于 2018-12-10 15:03:57

可以将ProjectedFSLib.lib添加到库中,也可以添加:

代码语言:javascript
运行
复制
#pragma comment(lib, "ProjectedFSLib.lib")

代码中的代码行。另外,请确保您使用的是10.0.17763.0版本的SDK。如果你正在使用mingw,如果这个库还没有发布,我也不会感到惊讶。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53700784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档