尽管设置,呼叫约定不正确?

时间:2016-07-29 14:24:54

标签: c++

我正在尝试编译一些最后使用Visual Studio 2015在VC ++ 6.0中编译的驱动程序代码。

链接器不断向我发出警告LNK4086声明:

  

入口点' _DriverEntry @ 8'不是__stdcall,有12个字节的参数;图片可能无法运行

该方法应使用 __ stdcall 约定,因为项目设置了 / Gz 选项。我甚至尝试手动添加选项以使其高兴,但链接器仍然抱怨:

_Use_decl_annotations_
NTSTATUS
__stdcall
DriverEntry(
    PDRIVER_OBJECT DriverObject,
    PUNICODE_STRING RegistryPath
    )

这个警告阻止我完成编译,因为它告诉我:

  

警告视为错误;没有生成输出文件

以下是我的链接器选项(为了隐私目的,我删除了文件名):

  

/ OUT:" [FILENAME REMOVED] .sys" / MANIFEST:NO / PROFILE / NXCOMPAT / Driver / PDB:" [FILENAME REMOVED] .pdb" / DYNAMICBASE" wdm.lib" " usbd.lib" / RELEASE / IMPLIB:" [FILENAME REMOVED] .lib" /VERSION:"4.0" / DLL / BASE:" 0x10000" / MACHINE:X86 / ENTRY:" DriverEntry" / WX / OPT:REF / SAFESEH / INCREMENTAL:NO / PGD:" [FILENAME REMOVED] .pgd" / OPT:ICF / ERRORREPORT:PROMPT /MERGE:" .rdata =。text" / NOLOGO / LIBPATH:" \ lib \ i386 \ checked" / LIBPATH:" C:\ Program Files(x86)\ Windows Kits \ 10 \ Lib \ 10.0.10586.0 \ km \ x86 \" / NODEFAULTLIB / SECTION:" INIT,d"

0 个答案:

没有答案