我想从具有许多依赖 DLL 的 DLL 中调用几个 API。我将所有 DLL 添加到安装包并定义了原型:
function myapi_Init(): Integer;
external 'myapi_init@A.dll stdcall setuponly loadwithalteredsearchpath delayload';
ExtractTemporaryFiles('*.dll')
我使用刚刚好的方法提取所有 DLL InitializeSetup()
,然后尝试调用相应的 API。我收到运行时错误,无法导入 dll...
我重新定义了原型,并删除了提取 DLL 的调用:
function myapi_Init(): Integer;
external 'myapi_init@files:A.dll,B.dll,C.dll,D.dll,E.dll stdcall setuponly loadwithalteredsearchpath delayload';
这工作正常。我检查过,在这两种情况下,所有适当的 DLL 都被提取并在同一个地方。我更喜欢第一种情况,因为它避免拼写每个 API 的所有 DLL 名称。在第一种情况下我做错了什么导致失败?