Как я могу создать dll с помощью cgo и файла .def

# #go

Вопрос:

Я хочу реализовать перенаправление dll(или прокси-сервер dll)

В mingw я могу использовать источник cpp с помощью .файл def, например gcc -shared -o test.dll functions.def test.cpp

Но я не знаю, как это реализовать в голанге

Ответ №1:

Я знаю, что нужно сделать, чтобы решить эту проблему.

используйте extldflags

Первый Способ:

  1. скомпилируйте файл .def в файл .exp
 dlltool --def functions.def --output-exp evildll.exp
 
  1. скомпилировать main.go

главное.вперед

 package main

import "C"

func main() {
    // Need a main function to make CGO compile package as C shared library
}
 

используйте команду go build -buildmode=c-shared -o exportgo.dll -ldflags="-extldflags=-Wl,C:/Users/Akkuman/Desktop/go-dll-proxy/evildll.exp"

затем вы можете получить dll

нажмите на меня, чтобы просмотреть изображение

Второй Способ

используйте команду go build -buildmode=c-shared -o exportgo.dll -ldflags="-extldflags=-Wl,C:/Users/Akkuman/Desktop/go-dll-proxy/functions.def"

затем вы можете получить dll, но с дополнительной функцией экспорта

нажмите на меня, чтобы просмотреть изображение