【发布时间】:2020-07-16 06:09:49
【问题描述】:
我尝试在 VS C++ 中编写一个 DLL 项目,其中包含一些导出函数,如下所示:
extern "C" __declspec(dllexport) int function_sendNumber(unsigned num);
我注意到 VS 项目带有包含 DllMain 入口函数的文件 dllmain.cpp。 但是,我注释了 DllMain 函数并使用 Delphi exe 应用程序 调用导出的函数,如下函数指针:
function function_sendNumber(n : Integer): Integer; cdecl;
external 'DLLproject.dll';
Delphi 应用程序成功调用了 DLL 导出函数。 我认为这种方法是 DLL 显式链接。 所以我想清楚地理解,是显式加载还是隐式加载。 如果是这样,如何在没有 DllMain 的情况下加载导出的函数。 我没有找到任何调用 LoadLibrary 来加载 DLL。
【问题讨论】:
-
DllMain 与隐式/显式链接/加载无关。问题是什么?
-
感谢@CristiFati。问题是应用程序如何在没有加载任何 DLL 的情况下找到这个导出函数。我通过转储检查了 dll,只发现导出函数名称作为入口点。是不是直接在dll文件上寻找导出函数名作为入口点。
标签: delphi dll dllexport dllmain