Есть небольшой тестовый проект на C#, который выступает в качестве так называемой обёртки для взаимодействия с другой библиотекой, которая скомпилирована из go (исходники прилагаются).
Выяснилось, что при компиляции dll под windows x64, в библиотеке отсутствуют некоторые экспортируемые функции, что в свою очередь в c# проекте приводит к ожидаемой ошибке такого содержания: Unable to find an entry point named 'cmix_dm_set_router'. При этом, если библиотеку скомпилировать для работы под системами linux или mac и запустить c# проект в них, то проблем не наблюдается, т.е. необходимые функции присутствуют в библиотеке.
Я пробовал компилировать win64 dll из-под linux командой ниже: CGO_ENABLED=1 GOOS=windows GOARCH=amd64 CC=x86_64-w64-mingw32-gcc go build -buildmode=c-shared -o libxxdk-win-x64.dll ./sharedcgo Так же в самой винде (предварительно установив gcc/g++ и тп) командой: go build -buildmode=c-shared -o libxxdk-win-x64.dll ./sharedcgo В обоих случаях получалась dll, в которой не было экспортируемой функции cmix_dm_set_router (и некоторых других, но я указываю именно эту в качестве ориентира), что подтверждала утилита dumpbin /EXPORTS libxxdk-win-x64.dll
Необходимо найти решение, которое добавит "потерянные" функции, и при этом, должна сохранится работоспособность под linux и mac. Это могут быть какие-то хитрые параметры компиляции под винду и другие манипуляции о которых я не знаю, либо внести необходимые изменения в код go или c#.
Код проекта в архиве или по ссылке github.com/NarayanaSupram... В папке sharedcgo собственно go код для компиляции dll. В папке xxdk.NET пример, который должен работать с полученной dll. На картинках: – результат выполнения с ошибкой; – вывод dumpbin для dll скомпиленных под win64 в линукс и под виндой, со списком функций, где отсутствует cmix_dm_set_router и некоторые другие. Так же мог бы предоставить vps с linux при необходимости.