【问题标题】:DLL compiled in Visual Studio 2015 throws 0xc000007b error在 Visual Studio 2015 中编译的 DLL 抛出 0xc000007b 错误
【发布时间】:2015-12-19 12:53:55
【问题描述】:

这让我发疯。我想创建一个基本的 DLL 挂钩(出于严格的信息目的等)

我的程序是 32 位的,所以我正在编译的 DLL。

所以我在 Visual Studio 2015 中创建了一个空的 DLL 项目(只是为了检查我的程序是否选择了它)并将“输出文件名”设置为 dinput8.dll

编译后,当我的程序尝试加载这个 DLL 时会抛出

应用程序无法正确启动 (0xc000007b)。点击确定关闭应用程序

是的,我已经安装了 VC++ Runtime 2015 的 64 位和 32 位版本。更奇怪的是,相同的 DLL 代码在 Code::Blocks (MinGW) 中编译时工作正常

【问题讨论】:

  • 这很可能是 32 位和 64 位模块的混合。你确定你正在加载你刚刚构建的 32 位 dll 吗?另外,您在帖子中提到了“钩子”;你是不是误挂了一些 64 位进程?
  • @VladFeinstein 是的,我 100% 确定。另外,我刚刚使用了 Dependency walker,它告诉我我缺少 API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL 和其他几个 API-MS-WIN-CRT-DLL。我在 Windows 10 上,我无法在我的系统的任何地方找到它们...

标签: c++ visual-studio dll visual-studio-2015


【解决方案1】:

好的,经过大量研究,问题在于我注入的 DLL 是虚拟的,没有任何导出。看起来至少需要一个导出,所以我做了一个虚拟导出

extern __declspec(dllexport) void dummyExp();

....
void dummyExp()
{
}

现在一切正常。

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多