DllCall returns an Array (your first post doesn't look like you realised that)
try this:
$dll = DllOpen("shapelib.dll")
Dim $lRet,$sPath,$hDBF
$sPath = @ScriptDir & "\test"
$hDBF = DllCall($dll, "ptr", "DBFCreate", "str", $sPath)
$lRet = DllCall($dll, "int", "DBFAddField", "ptr", $hDBF[0], "str", "name", "int", 1, "int", 10, "int", 0)
DllCall($dll, "int", "DBFWriteIntegerAttribute","ptr", $hDBF[0], "int", 0, "int", 0, "int", 10)
DllCall($dll, "none", "DBFClose", "ptr", $hDBF[0])
DllClose($dll)