问题标签 [dllmain]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
313 浏览

python - 如何在 Go 中实现 DllMain 入口点

我正在使用 Go 构建一个 DLL。

我无法实现 windows DllMain entry point

我的目标是当应用程序通过LoadLibrary调用该Test方法加载 dll 时,DllMain也将调用该方法。然而,目前该应用程序有点陷入僵局,没有任何反应。

该应用程序是非常简单的python代码

笔记:

  • 我正在使用

    并使用

  • 如果我删除DllMain,一切正常,应用程序可以Test成功调用该方法。

  • 我知道我可以指定switch条件DllMain,例如附加进程、分离进程……等等,我只是想让它尽可能简单。

0 投票
0 回答
27 浏览

windows - 如何从 DllMain 中止全局对象销毁?

我需要找到一种可靠的方法来跳过DllMain使用DLL_PROCESS_DETACH.

从 Microsoft Dynamic-Link Library Best Practices中,我们找到了您永远不应该在 DllMain 中执行的任务列表,并且该列表不包含ExitProcess

我可以假设ExitProcess在这种情况下打电话是安全的吗?_Exit那么应该使用其他标准 C 函数来终止进程而不完全清理资源呢?目前,我正在使用_Exit它似乎可以正常工作。

0 投票
1 回答
159 浏览

c++ - 没有调用 Dllmain 函数

我在这里搜索,但这些问题都没有帮助我,所以是的,我会解释一下:当我的 Dllmain 函数附加到 Visual Studio 项目设置中的进程 (rundll32.exe) 时,它没有被调用我将它更改为附加到 rundll32.exe 它应该在附加时显示一个消息框,但它只是不这样做。我的代码:

谢谢

0 投票
1 回答
26 浏览

c++ - 在 Dllmain 中调用“glfwCreateWindow”时冻结

当我调用glfwCreateWindowDllMain,程序冻结,CPU 使用率降至 0%。

如果我将程序类型从 更改为.dll.exe替换为 ,DllMain我的代码可以正常工作main

这是我的代码的一部分:

当我运行程序时,会打印 1,但是程序会冻结并且永远不会打印 2。

0 投票
1 回答
39 浏览

c++ - 使用 MSVC 的链接器中的“LNK2005 DLLMain 已定义 ...”冲突

我有一个 C++ 项目,到目前为止编译和链接都没有问题,但由于最近的计算机崩溃,我不得不重新安装所有东西,包括 Visual Studio 和我所有的 VCPKG 包。(我使用的是 VS 2022 预览版,之前是这样。)

我的项目使用了许多静态链接的库,包括英特尔的 TBB 和 Armadillo(这取决于 OPENBLAS 等)。但是,需要注意的是,即使项目使用静态链接,OPENBLAS 和 TBB 仍然需要链接 DLL。

现在我正在用以前工作的相同项目属性编译同一个项目,并且不断收到 LNK2005 错误,指出:

DllMain 已在 openblas.lib(memory.c.obj) 中定义..... tbb_debug.lib(tbb_main.obj)

如果我切换链接顺序,所有发生的都是错误更改为

DllMain 已在 tbb_debug.lib(tbb_main.obj).... openblas.lib(memory.c.obj) 中定义

[注意:在发布和调试配置中链接是同样的问题。]

现在我想不通的是为什么会发生这种情况。当然,项目依赖多个导入的 DLL 是正常的。DLL 导出它们的 DllMain 入口点函数是很正常的。

由于 PC 崩溃,我被迫将所有内容升级到绝对最新版本,我想知道这是否在某个地方引入了问题。

这是 MSVC 中的一个错误,它认为来自两个不同 DLL 的两个 DllMain 函数存在冲突?

如果这是一个真正的冲突,有人可以向我解释一下,使用第三方 DLL 构建大型项目的人不会经常发生这种情况吗?

我已经尝试了所有方法,包括全新安装 VCPKG,但没有任何帮助。

我发现完成链接的唯一选择是使用 /FORCE:MULTIPLE 选项,我真的不喜欢它,因为它可能会创建有缺陷的可执行文件。

这里的任何建议将不胜感激。