为什么我的 DLL 没有执行 EntryPoint?

我将 lua 包添加到了我的 C++ 项目中,但是每次我将 lua 包含在我的项目中时,当我的 DLL 被附加时,没有任何函数被调用,但是当我没有包含 lua 时,消息框出现。我确定不是注入程序的问题,因为我已经用多个程序测试了我的 DLL,现在让我发疯了。有没有人有任何解决方案或正确路径的步骤?我真的非常感激!

使用的包: https://bitbucket.org/sgrottel_nuget/lua/overview

编辑:包括 lua 头文件将从我的 dll 中删除功能。删除 lua 头文件(注释掉"#include "lua.hpp")将允许消息框弹出。我是否使用了 lua 包错了,还是我错过了一个小步骤?

#include "FVM.h" // 包括了 lua 头文件等(当删除函数被附加时起作用)

    // 入口点
    BOOL APIENTRY DllMain(HMODULE hModule,
        DWORD  ul_reason_for_call,
        LPVOID lpReserved
    )
    {
        switch (ul_reason_for_call)
        {
        case DLL_PROCESS_ATTACH:
            MessageBoxA(NULL, "attached", "Function", MB_OK);
        case DLL_THREAD_ATTACH:
            MessageBoxA(NULL, "attached", "Function", MB_OK);
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
        }
        return TRUE;
    }
点赞
用户6601582
用户6601582

我无法重新现此问题。 请按照我的步骤进行操作,查看是否可以重新现此问题。

1.使用Windows桌面应用程序模板创建主应用程序。 2.使用Dynamic-Link Library(DLL)模板创建DLL应用程序。 3.将LUA nuget包安装到DLL应用程序中。 4.将头文件添加到dllmain.cpp中,并添加与您的代码相同的MessageBoxA。 5.在主应用程序中加载DLL:

HMODULE myDll = LoadLibraryA(“D:\\ TestDllLoad \\ Debug \\ Dll1.dll”);

结果是每次启动主应用程序时,消息框都会显示“attached”。

enter image description here

2019-02-13 09:08:12