win32 asm的程序如何链接其他的obj文件
我要用一个库里的函数, 但是给的是.obj和.h文件, 请问如何使用这个库里的函数我的dll也要用这个库的函数, 应该怎么链接.
[ 本帖最后由 swp160108 于 2009-9-18 17:48 编辑 ]
;EXTERNDEF C DogAddr:SWORD / ; | ;EXTERNDEF C DogPassword:DWORD | ; | ;EXTERNDEF C NewPassword:DWORD | - 取消这些定义,他们是给C的编译器看的 ; | ;EXTERNDEF C DogResult:DWORD | ; | ;EXTERNDEF C DogCascade:BYTE | ; | ;EXTERNDEF C DogData:DWORD \ @proto_0 TYPEDEF PROTO C DogCheck PROTO @proto_0 @proto_1 TYPEDEF PROTO C ReadDog PROTO @proto_1 @proto_2 TYPEDEF PROTO C DogConvert PROTO @proto_2 @proto_3 TYPEDEF PROTO C WriteDog PROTO @proto_3 @proto_4 TYPEDEF PROTO C DisableShare PROTO @proto_4 @proto_5 TYPEDEF PROTO C GetCurrentNo PROTO @proto_5 @proto_6 TYPEDEF PROTO C SetPassword PROTO @proto_6 @proto_7 TYPEDEF PROTO C SetDogCascade PROTO @proto_7在你的主程序里添加:
include gsmh.inc public DogBytes,DogAddr,DogPassword,NewPassword,DogResult,DogCascade,DogData ;在OBJ里导出符号,供外部的OBJ使用 .data DogBytes SWORD ? / DogAddr SWORD ? | DogPassword DWORD ? | NewPassword DWORD ? | + 具体使用的变量 DogResult DWORD ? | DogCascade BYTE ? | DogData DWORD ? \编译、链接命令:
@echo off set mdir=d:\masm32 set path=d:\masm32\bin set include=d:\masm32\include;d:\My_Sdk\include set lib=d:\masm32\lib;d:\My_Sdk\lib if exist testdog.obj del testdog.obj if exist testdog.exe del testdog.exe ml /c /coff /Cp /Gz testdog.Asm link /MACHINE:IX86 /SUBSYSTEM:WINDOWS testdog.obj MHWIN32C.OBJ @echo on dir testdog.* pause