Sử dụng syscall
trong Tìm hiểu cách tôi có thể gọi UWP API trong Windows 10? Tôi đã xem và thử nhiều ví dụ: win32, nhưng khi tôi đã thử sử dụng System.WindowsRuntime.dll
thì đó là một sự cố; Cụ thể, tôi nhận được:Golang: sử dụng Windows 10 API/UWP/System.WindowsRuntime?
panic: Failed to load System.WindowsRuntime.dll: The specified module could not be found.
(điều này là trong thời gian chạy, nhị phân được xây dựng tốt)
tôi đã cố gắng xây dựng cả với một tiêu chuẩn go build
cũng như mã
go build -ldflags="-H windows"
dụ:
var(
windowsRuntime = syscall.NewLazyDLL("System.WindowsRuntime.dll")
getDiskFreeSpace = windowsRuntime.NewProc("GetDiskFreeSpace")
)
Lưu ý: các biến thể khác thử:
windowsRuntime = syscall.NewLazyDLL("System.Runtime.WindowsRuntime.dll")
&
windowsRuntime = syscall.NewLazyDLL("WindowsRuntime.dll")
Bất cứ ai cũng có thể nhận được chạy này hoặc có lời khuyên nào về vấn đề này? Như mọi khi, rất nhiều được đánh giá cao !!
GetDiskFreeSpace sống trong kernel32.dll (xem https://msdn.microsoft.com/en-us/library/windows/desktop/aa364935(v=vs.85).aspx). Vì vậy, bạn nên có windowsRuntime = syscall.NewLazyDLL ("kernel32.dll") – alex
Có, bạn đã lấy 'System.WindowsRuntime.dll' từ đâu? Bạn đang cố gắng gọi phương thức 'GetDiskFreeSpace()' của một lớp UWP cụ thể? Nếu vậy, bạn đang ở trong một thế giới bị tổn thương ... – andlabs
Phải, bạn là 'kernel32.dll', không chắc là tôi lấy nó từ đâu, tôi đang cố gắng truy xuất lại các bước của mình, trong mọi trường hợp, Không tìm thấy System.WindowsRuntime.dll' với 'panic: Không tải được System.WindowsRuntime.dll: Không thể tìm thấy mô-đun được chỉ định.' trong khi khi tôi có tên hàm/thủ tục sai' GetDiskFreeSpace' tôi nhận được 'hoảng loạn: Không thành công để tìm thủ tục GetDiskFreeSpace trong Kernel32.dll: Không thể tìm thấy quy trình được chỉ định.' Vì vậy, 'System.WindowsRuntime.dll' chắc chắn bị thiếu. Bây giờ chỉ để tìm ra nơi mà nếu đó là ngay cả tên thích hợp. Tôi sẽ liên lạc lại với bạn một thời gian ngắn. – ehiller