Dllmain没有被呼叫
Dllmain not being called?
我正在写这样的dllmain:
#include "main.h"
#include "init.h"
#include <iostream>
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
//std::cout<<"hin"; //only for debug. did not shown.
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
//std::cout<<"hellon"; //only for debug. did not shown.
init(); //did not run :(
break;
case DLL_PROCESS_DETACH:
// detach from process
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
但是在测试程序使用LoadLibrary()之后,什么也没发生,屏幕上没有你好或嗨。你想弄清楚这个问题吗?非常感谢!
附言:我看到问题DllMain没有被点名但还是无济于事。
PS2:调用程序类似
int main()
{
cout<<"This is a test program to test.n";
HINSTANCE hinstDLL;
hinstDLL=LoadLibrary("ijl15.dll");
cout<<"Look like everything goes well.n";
cout<<hinstDLL;
return 0;
}
测试仪程序输出:
This is a test program to test.
Look like everything goes well.
0x6a980000
Process returned 0 (0x0) execution time : 0.007 s
Press any key to continue.
经过一些尝试(alot:()我发现我错过了
#define DLL_EXPORT extern "C" __declspec(dllexport)
这将使函数名称正确,并最终成功调用DLLMain。不管怎样,谢谢大家!
我怀疑是你的控制台交互代码关闭了。你可以尝试做一些不那么微妙的事情,比如打开一个窗口或ShellExecute()
发出声音。
您在DLLMain中所能做的工作受到严重限制。具体来说,执行任何I/O通常都是不允许的。它是为了进行一些简单的初始化,而不是像main()在可执行文件中那样操作。
LoadLibrary
是否真的返回了一个值(cout<<hinstDLL
调用显示的值)?
您的dll是否在同一目录中或可通过PATH
环境变量使用?
你在不同的地方有多个版本的dll吗(发布版和调试版)?
相关文章:
- 呼叫运营商<<临时
- 呼叫 QSound,它们之间有延迟 Qt C++
- 什么是呼叫说明
- DllMain w/ createthread and printf
- 为什么make_shared在不同的呼叫中分配相同的地址?
- 我们可以在它被钩住之前将数据传递给 DLLMain 吗?
- 错误:类型"std::__1::basic_string<char>"不提供呼叫运算符
- 设备IO控制呼叫崩溃
- 当我将 DLL 注入现有进程时,DLLMain 不执行任何操作
- 根据呼叫位置进行记忆
- 成员呼叫通过接线员<<
- QSerialPort 手动 RTS 开/关未同步呼叫
- 在注入的 Dll 的 DllMain 中运行代码导致注入超时
- 将清除共享智能指针上的呼叫重置
- 来自 Pharo Smalltalk 的 ffi 呼叫上的分段错误
- C/C++ 在条件和阻止呼叫之间收到信号情报
- 将数据集从 R 传递到C++(使用 .呼叫)
- 无匹配函数呼叫getline()
- 通过呼叫constexpr函数来定义静态constexpr成员
- Dllmain没有被呼叫