Tukar C kepada Golang menggunakan windows.h

WBOY
Lepaskan: 2024-02-08 23:40:19
ke hadapan
443 orang telah melayarinya

使用 windows.h 将 C 转换为 Golang

PHP editor Zimo akan memperkenalkan anda cara menggunakan windows.h untuk menukar kod bahasa C kepada Golang. Windows.h ialah fail pengepala sistem pengendalian Windows, yang mengandungi banyak fungsi dan jenis data yang digunakan untuk pengaturcaraan sistem. Dengan menukar kod C kepada Golang, kami boleh menggunakan API Windows dalam persekitaran Golang untuk mencapai pembangunan program yang lebih cekap dan fleksibel. Artikel ini akan memperkenalkan anda kepada langkah penukaran dan langkah berjaga-jaga secara terperinci untuk membantu anda berjaya menyelesaikan penukaran daripada C ke Golang dan meningkatkan kecekapan pembangunan dan kualiti kod.

Kandungan soalan

Saya mahu menukar kod ini kepada bahasa c dan ia berfungsi dengan baik

#include <windows.h>

void main() {
    double* mdl_g;
    void* dll = loadlibrary("./test_win64.dll");
    mdl_g     = ((double*)getprocaddress(dll, "g"));
    printf("g = %.2f",*mdl_g);
}
Salin selepas log masuk

Bahasa pergi. Saya baru sahaja mencuba helah ini dan ia tidak berjaya:

func main() {

    dll, _ := syscall.LoadDLL("./test_win64.dll")
    mdl_G, _ := syscall.GetProcAddress(dll.Handle, "G")
    real_G := (*float64)(unsafe.Pointer(&mdl_G))
    log.Print(*real_G)

}
Salin selepas log masuk

Tetapi ia tidak berkesan. Sebarang cadangan?

Terima kasih

Penyelesaian

Ralat adalah & pengendali dalam penunjuk tidak selamat. Kaedah getprocaddress sudah mengembalikan uintptr.

func main() {

    dll, _ := syscall.LoadDLL("./test_win64.dll")
    mdl_G, _ := syscall.GetProcAddress(dll.Handle, "G")
    real_G := (*float64)(unsafe.Pointer(mdl_G)) // this conversion is safe.
    log.Print(*real_G)

}
Salin selepas log masuk

go vet akan melaporkan kemungkinan penyalahgunaan ciri. Walau bagaimanapun, ini betul: benarkan penukaran uintptr kepada unsafe.pointer apabila ia menunjuk ke memori bukan pergi #58625

Atas ialah kandungan terperinci Tukar C kepada Golang menggunakan windows.h. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!