Winapi 在运行时dll(如MSVCR120.dll)上找不到Proc&;MSVCP120.dll

Winapi 在运行时dll(如MSVCR120.dll)上找不到Proc&;MSVCP120.dll,winapi,dll,windows-server-2016,nano-server,Winapi,Dll,Windows Server 2016,Nano Server,我正在使用NanoServerApiScan.exe扫描二进制文件以获得nano服务器支持。它返回如下错误: KERNEL32.dll CopyFileA(Proc not found) Please use API CopyFileExA as substitution. MoveFileExA(Proc not found) Please use API MoveFileExW as substitution. ADVAPI32.dll LogonUserW(Pr

我正在使用NanoServerApiScan.exe扫描二进制文件以获得nano服务器支持。它返回如下错误:

KERNEL32.dll
  CopyFileA(Proc not found)
    Please use API CopyFileExA as substitution.
  MoveFileExA(Proc not found)
    Please use API MoveFileExW as substitution.
ADVAPI32.dll
  LogonUserW(Proc not found)
    Please use API LogonUserExExW as substitution.
我可以按照建议让我的二进制文件在nano服务器上工作。扫描还返回MSVCR120.dll和MSVCP120.dll中的错误

MSVCR120.dll
    __crt_debugger_hook(Proc not found)
    __crtUnhandledException(Proc not found)
    __crtTerminateProcess(Proc not found)
    _onexit(Proc not found)
MSVCP120.dll
    ?_Xbad_alloc@std@@YAXXZ(Proc not found)
    ?_Xout_of_range@std@@YAXPEBD@Z(Proc not found)
    ??0id@locale@std@@QEAA@_K@Z(Proc not found)

如何修复此类错误?反向转发器包是否也可以重新路由这些API?如果我的客户没有将其服务器配置为反向转发器,该怎么办?

只是一个猜测:可能Nano服务器只支持运行链接到通用CRT的代码。您似乎是在链接Visual Studio附带的运行时。因此,您的代码在指向的DLL中使用了这些函数,但Nano附带的版本以某种方式被剥离,只导出常规版本的一个子集(至少这是我的猜测)。第一个符号似乎与调试相关。您是否有过调试构建(不太可能),或者使用调试工具?你的VStudio版本(看起来像是2k13)与Nano兼容吗?理论上,这些“错误”应该通过调整一些编译器/链接器标志来消除。@CristiFati是的,你是对的。我使用的NanoServerApiScan.exe是一个旧的。。我的二进制文件实际上在nano上运行得很好,并进行了建议的更改。