Rumah > pembangunan bahagian belakang > Golang > Tukar C kepada Golang menggunakan windows.h

Tukar C kepada Golang menggunakan windows.h

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-08 23:40:19
ke hadapan
512 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!

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