Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 导出与Win32 API函数同名的函数_C++_Dll_Dllexport - Fatal编程技术网

C++ 导出与Win32 API函数同名的函数

C++ 导出与Win32 API函数同名的函数,c++,dll,dllexport,C++,Dll,Dllexport,我有一个项目,我从中导出一个名为BlockInput的函数。这个函数是我自己的,但是在User32中也有一个名为BlockInput的Win32 API。因此,将我的函数导出为BlockInput会导致编译器假定引用了User32.BlockInput,并将其导出 我的导出操作如下所示: MyHeader.h ELITEAPI void\u stdcall块输入(void*apobject,bool块); 导出.def BlockInput 这个DLL总共有大约100个导出,它们都工作得很好

我有一个项目,我从中导出一个名为BlockInput的函数。这个函数是我自己的,但是在User32中也有一个名为BlockInput的Win32 API。因此,将我的函数导出为BlockInput会导致编译器假定引用了User32.BlockInput,并将其导出

我的导出操作如下所示:

MyHeader.h

ELITEAPI void\u stdcall块输入(void*apobject,bool块);
导出.def

BlockInput

这个DLL总共有大约100个导出,它们都工作得很好,只是这个有一个问题,因为系统API共享相同的名称。有没有一种方法可以导出此函数而不必将其重命名为其他函数?我可以强制.def文件专门使用我的函数而不是user32 first中的函数吗?

您可以在.def文件中重命名该函数,以便它将MyBlockInput导出为BlockInput。但是,客户端处理BlockInput的两个定义仍然存在问题,一个来自DLL,另一个来自user32。这是我试图避免的。如果可能的话,我希望能够阻止user32的BlockInput被看到。您可以在头文件中更改它<代码>#ifdef MYDLL_实现
#定义块输入MyBlockInput
。您可能已经有了此
#ifdef
,因此可以更改
ELITEAPI
的定义。您可以重命名.def文件中的函数,以便将MyBlockInput导出为BlockInput。但是,客户端处理BlockInput的两个定义仍然存在问题,一个来自DLL,另一个来自user32。这是我试图避免的。如果可能的话,我希望能够阻止user32的BlockInput被看到。您可以在头文件中更改它<代码>#ifdef MYDLL_实现
#定义块输入MyBlockInput
。您可能已经有了这个
#ifdef
,因此您可以更改
精英API
的定义。