为什么我的DLL不执行EntryPoint?

问题描述 投票:0回答:1

我将lua包添加到我的c ++项目中,但是任何时候lua都包含在我的项目中,当我的DLL被连接时,没有函数被调用,但是当我不包含lua时,消息框出现在附件上。我确定它不是注射程序,因为我测试了我的DLL与多个程序,它现在让我发疯。有没有人在正确的道路上有任何解决方案或步骤?我真的很感激!

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

编辑:包括lua标头将从我的DLL中删除功能。删除lua标题(注释掉“#include”lua.hpp“)会弹出消息框。我使用的是lua包错误还是我错过了一小步?

#include "FVM.h" // includes lua headers etc. (when removed function works on attachment)


    // Entry point
    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;
    }
c++ winapi lua dll-injection
1个回答
0
投票

我无法重现这个问题。请按照我的步骤查看是否可以重现此问题。

  1. 使用Windows桌面应用程序模板创建主应用程序。
  2. 使用动态链接库(DLL)模板创建DLL应用程序。
  3. 将LUA nuget包安装到DLL应用程序。
  4. 将头文件添加到dllmain.cpp并添加与您的代码相同的MessageBoxA。
  5. 在主应用程序中加载DLL: HMODULE myDll = LoadLibraryA("D:\\TestDllLoad\\Debug\\Dll1.dll");

结果是每次启动主应用程序时消息框显示“附加”。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.