我正在编写\编译一个DLL(当前)只导出一个空白函数。源代码:
DLLMain.cpp -
LIBRARYEXPORT LRESULT CALLBACK KeyboardProc(
int code,
WPARAM wParam,
LPARAM lParam
){
return 0;
}
到目前为止一切都还可以,这是我的DLLMain.h -
using namespace std;
#include <iostream>
#include <fstream>
#include <string>
#include <Windows.h>
#define LIBRARYEXPORT __declspec(dllexport)
LIBRARYEXPORT LRESULT CALLBACK KeyboardProc(
int code,
WPARAM wParam,
LPARAM lParam
);
我计划将此DLL与Windows挂钩一起使用以检测按键操作,但是当我从单独的可执行文件调用LoadLibrary时,它会返回运行时错误
“DLL'C:\ Users \ Orin \ Documents \ Visual Studio 2010 \ Projects \ winmain \ Debug \ winmain.dll'正在尝试在OS Loader锁内执行托管执行。不要尝试在DllMain或图像中运行托管代码初始化函数,因为这样做会导致应用程序挂起。“
这很好,但是这里有一个问题:我的KeyboardProc函数中根本没有运行任何代码,我甚至没有DllMain例程
我尝试过(但没有奏效):
非常感谢您的建议和意见!
答案 0 :(得分:0)
找到答案:
使用Visual Studio时,不得选择CLR Library项目。而是使用“Win32项目”模板。我不敢相信我错过了!