mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
Revert "Updated WindowsDLLs (markdown)"
parent
8d8bd4db07
commit
1c8c29b2df
@ -1,9 +1,10 @@
|
|||||||
# Calling a Windows DLL
|
# Calling a Windows DLL
|
||||||
|
|
||||||
Go позволяет вызывать собственную функцию Windows несколькими различными способами.
|
Go allows you to call native Windows function in several different ways.
|
||||||
|
|
||||||
Динамически загружайте библиотеку DLL, а затем вызывайте в ней функцию. Вы можете вызвать функцию через SyscallX (где X - количество параметров. Если функция имеет меньше параметров, чем это, например, передача 7 аргументов функции, которая принимает 9, Syscall9 все равно будет работать, вам просто нужно указать 7 в качестве второго аргумента для Syscall9).
|
1. Dynamically load a DLL, then call a function in it. You can call the function via `SyscallX` (where X is the number of parameters. If the function has fewer parameters than that, for example passing 7 arguments to a function that accepts 9, `Syscall9` will still work, you just need to specify 7 as your second argument to `Syscall9`).
|
||||||
Пример программы Go, которая вызывает функцию Windows DLL, используя этот метод:
|
|
||||||
|
A sample Go program that calls a Windows DLL function using this method:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package main
|
package main
|
||||||
@ -93,7 +94,7 @@ func init() {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
2. Использование системного вызова.NewProc вместо системного вызова.GetProcAddress. По сути, это несколько вспомогательных методов по сравнению с методами системного вызова, которые вы видели выше, и они доступны только в Windows: http://golang.org/src/pkg/syscall/dll_windows.go
|
2. Using syscall.NewProc instead of syscall.GetProcAddress. These are basically some helper methods over the syscall ones, you saw above, and are available in Windows only: http://golang.org/src/pkg/syscall/dll_windows.go
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package main
|
package main
|
||||||
@ -118,7 +119,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Путем "linking" к библиотеке, используя метод "cgo" (этот способ работает в Linux и Windows). Пример:
|
3. By "linking" against the library, using the "[[cgo]]" method (this way works in Linux and Windows). Example:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import ("C")
|
import ("C")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user