找回密码
 立即注册

Golang调dll激活引擎的时候总是28673 无效的AppID

本帖最后由 科海智博VIP 于 2018-11-13 21:29 编辑

package main

import (
        "fmt"
        "syscall"
        "unsafe"
)

const (
        ASF_DETECT_MODE_VIDEO = 0x00000000
        ASF_DETECT_MODE_IMAGE = 0xFFFFFFFF
        ASF_NONE  = 0x00000000
        ASF_FACE_DETECT = 0x00000001
        ASF_FACERECOGNITION   = 0x00000004
        ASF_AGE = 0x00000008
        ASF_GENDER = 0x00000010
        ASF_FACE3DANGLE= 0x00000020

        ASF_APPID  = "D7uzUTqvGsGzJ2VgTdvnEy*************BM4S3v"
        ASF_SDKKEY = "Euqdub6zERNzgWHprRgM*************KYQxDj"
)

var (
        arc_face_engine, _ = syscall.LoadDLL("libarcsoft_face_engine.dll")
        arc_face_engine_ASFActivation, _ = arc_face_engine.FindProc("ASFActivation")
)

func main() {
        r1, err := ASF_Activation(Str2Ptr(ASF_APPID), Str2Ptr(ASF_SDKKEY))
        fmt.Println(r1)
        fmt.Println(err)
}

func ASF_Activation(AppId, SdkKey uintptr) (r1 uintptr, err error) {
        r1, _, err = arc_face_engine_ASFActivation.Call(AppId, SdkKey)
        return
}

func Str2Ptr(s string) uintptr {
        return uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s)))
}
回复

使用道具 举报

大神点评1

WindOSX 2019-5-13 11:49:44 显示全部楼层
本帖最后由 WindOSX 于 2019-5-13 11:57 编辑

要把String转为Byte类型的指针:
  1. uintptr(unsafe.Pointer(syscall.BytePtrFromString(appId)))
复制代码
真正坑的是在后面的ASFDetectFaces接口,怎么传参数都不对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册