“无法在动态链接库 KERNAL32.dll 中找到过程入口点 CreateFile2”
我们一直在使用一个新系统,由 waf 构建的 C++ 到 Visual Studio 2013 构建(vcxproj),已经转换了几个项目,但它们都构建为 dll。尝试构建外部 exe 文件项目有点困难。起初它甚至没有将其视为一个 win32 应用程序(尽管我是在 x64 中构建的),但我补充说:
<IsLauncher>true</IsLauncher>
这似乎解决了这个问题。现在我得到了上述错误。
我正在使用一个旧的 3rd 方插件,它有一个使用 CreateFile2 的逻辑路径。我的机器上已经安装了 windows 8.1 套件(出于某种原因),它正在尝试使用其中的 windows.h。我尝试将 Windows SDK\7.1A 包含在内,它的 windows.h 正确定义了它,但 sal_supp.h 定义了 VS 2013 的 sal.h 也定义的宏,这是一个不起作用的解决方案。
我查看了其他问题,但它们似乎都是 Win XP 的问题,在 Windows 7 上没有完全适合的问题。由于这涉及 Kernel32,因此大多数其他问题似乎并不涉及系统 dll 或创建您自己的 vcxproj。当我在 waf 中构建它时,这一切都奏效了,所以我知道安装的任何东西实际上都没有任何问题。
我试过的东西:
<ClCompile><PreprocessorDefinitions>WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions></ClCompile>
<PropertyGroup Label="Configuration"><UseOfMfc>Dynamic</UseOfMfc></PropertyGroup>
<PropertyGroup><LinkIncremental>true</LinkIncremental></PropertyGroup>
<Link><AdditionalDependencies>kernel32.lib;Ws2_32.lib;psapi.lib;zlib.lib;shlwapi.lib;...</AdditionalDependencies></Link>
我知道,不是链接器错误,但值得一试。