Как использовать cgo для загрузки библиотеки COM в Windows - PullRequest
0 голосов
/ 10 декабря 2018

Итак, я хочу использовать COM-библиотеку redemption в go.
Я уже мог успешно использовать ее, сначала зарегистрировав, а затем Go-OLE для вызова функций.

Но в идеале я хочу использовать его без предварительной регистрации.
Когда я искал ссылки на DLL в go, я нашел много ответов высказываниеиспользовать cgo, но я не смог найти учебник, описывающий как использовать cgo.

После прочтения документации cgo и этого ответа о кросс-компиляции (я кросс-компилирую из Ubuntu linux amd64 в windows amd64) Я решил, что, возможно, смогу использовать dll, установив переменные окружения в

GOOS=windows;GOARCH=amd64;CGO_ENABLED=1;CXX=x86_64-w64-mingw32-g++;CC=x86_64-w64-mingw32-gcc

и написав файл go, подобный этому

package main

//#cgo windows LDFLAGS: -L/go/src/tryingout/Redemption64.dll
import "C"
import "fmt"

func main() {
    session := C.Redemption.RDOSession
    fmt.Println(session)
}

К сожалению, это не сработало, я получил ошибку could not determine kind of name for C.Redemption при компиляции.Я искал это, и это означает, что Искупление не существует.Но я знаю, что он должен быть назван так, поскольку 1) Это должно быть в соответствии с документацией о выкупе и 2) Он работал раньше с go-ole

Также существует класс загрузчика написано на C #, C ++ и других языках разработчиком выкупа, но я также не мог использовать это, потому что это почему-то всегда интерпретировалось как C вместо C ++ и, таким образом, приводило к ошибкам.Я попытался это решение и добавил -lstdc++ к моим LDFLAGS, но это не имело никакого значения.

Поэтому мой вопрос, как мне загрузить и использовать эту библиотеку COM или где я могу найтиучебник / пример кода, который это объясняет?

...