在 DLLMAIN() 中调用函数
Posted
技术标签:
【中文标题】在 DLLMAIN() 中调用函数【英文标题】:calling functions inside DLLMAIN() 【发布时间】:2019-01-04 14:18:27 【问题描述】:我正在尝试创建 DLL 文件,但在 DLLMAIN() 中运行函数时遇到问题。
我想做这样的事情:
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
INT APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
switch (ul_reason_for_call)
case DLL_PROCESS_ATTACH:
foo1();
break;
case DLL_PROCESS_DETACH:
foo2()();
break;
return true;
void foo1()
//code
void foo2()
// code
但它不起作用。 当我试图构建我得到的文件时
'foo1' identifier not found
'foo2' identifier not found
我在这里做错了什么?
谢谢!
【问题讨论】:
这是 C 101;它与 Windows 或 DllMain 无关。函数需要在调用之前声明。 【参考方案1】:可能是因为您没有声明函数。放一个
void foo1();
void foo2();
在你使用 DllMain 之前,它会编译。
但请注意。 You should not do anything substantial in DllMain。尤其是涉及直接或间接加载库的任何事情都可能导致死锁。
【讨论】:
谢谢。但现在我得到了这些错误: DllMain@12 已经在 Dll1.obj 中定义,找到一个或多个多重定义的符号。知道有什么问题吗? 见***.com/questions/4539238/dllmain12-already-defined以上是关于在 DLLMAIN() 中调用函数的主要内容,如果未能解决你的问题,请参考以下文章