【发布时间】:2021-02-15 13:07:20
【问题描述】:
所以我目前正在尝试在我的程序集文件中调用 dll 的导出函数。
DLL 与我的 asm 程序在同一目录中,我没有 .lib 文件。
这是我的代码:
EXTERN __imp__CreateCompressor@12:PROC
EXTERN __imp__Compress@24:PROC
EXTERN __imp__CloseCompressor@4:PROC
.code
START:
push 2 ;COMPRESS_ALGORITHM_MSZIP
push 0
push OFFSET hCompress
call __imp__CreateCompressor@12
push 0 ;CompressedDataSize
push DWORD ptr [DataSize] ;CompressedBufferSize
push eax ;CompressedBuffer
push DWORD ptr [DataSize]
push DWORD ptr [pBuf3]
push DWORD ptr [hCompress]
call __imp__Compress@24
push DWORD ptr [hCompress]
call __imp__CloseCompressor@4
END START
但是我得到了错误:
file.obj : error LNK2001: unresolved external symbol ___imp__CreateCompressor@12
file.obj : error LNK2001: unresolved external symbol ___imp__Compress@24
file.obj : error LNK2001: unresolved external symbol ___imp__CloseCompressor@4
file.exe : fatal error LNK1120: 3 unresolved externals
我是这样组装的:
ml file.asm /link /subsystem:console /entry:START
有什么想法吗?
【问题讨论】:
-
EXTERN __imp__CreateCompressor@12:DWORD必须是。不是PROC等等 __imp_ 符号 -
比你需要添加 Cabinet.lib 用于链接器输入
-
您必须拥有 .lib 文件才能解决链接器错误。不难获得,它包含在 Windows SDK 中。