1. 程式人生 > >Go中呼叫dll示例

Go中呼叫dll示例

package main 

import (
  "syscall"
)

func main(){
	h, err := syscall.LoadLibrary("kernel32.dll")
	if err != nil {
	  abort("LoadLibrary", err)
	}
  defer syscall.FreeLibrary(h)
  proc, err := syscall.GetProcAddress(h, "GetVersion")
  if err != nil {
    abort("GetProcAddress", err)
  }
  r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0)
  print_version(uint32(r))
}

func abort(funcname string, err error) {
  panic(funcname + " failed: " + err.Error())
}

func print_version(v uint32) {
	major := byte(v)
	minor := uint8(v >> 8)
	build := uint16(v >> 16)
	print("windows version ", major, ".", minor, " (Build ", build, ")\n")
}


相關推薦

Go呼叫dll示例

package main import ( "syscall" ) func main(){ h, err := syscall.LoadLibrary("kernel32.dll") if err != nil { abort("LoadLibrary

如何在Go語言呼叫DLL

go語言通過syscall實現對作業系統的呼叫,從網上找了幾個例子,彙集如下: 例子一 關鍵程式碼共四行: h := syscall.LoadLibrary("kernel32.dll") proc := syscall.GetProcAddress(

c#呼叫dll時報無法載入模組的幾種常見原因

不說廢話,直接說原因: 用c#寫的a.exe程式碼: static void Main(string[] args) { int i = doit(); Console.WriteLine

VBA呼叫dll檔案的路徑問題

Today I have met some problems on specifying a relative path into a excel vba header, linking a dll.You must specify a absolute one instea

NI LabWindows CVI 呼叫 DLL 的幾種方法

        這幾日上網發現CVI的討論者多了,也發現有很多CVI友們提出了一些困惑,比如用CVI載入別的程式語言寫的DLL時遇到的無法使用的問題。         首先是   extern "C",CVI中無法載入有此類宣告的DLL(有一些人發表的關於CVI載入DLL的文章中居然說必需有extern

如何在node-webkit呼叫dll

       最近在研究nodejs和node-webkit,需要在node-webkit應用中呼叫dll ,折騰了好久,遇到不少麻煩,國內沒怎麼介紹具體方法,就將這幾天的研究成果說明下,希望對後來人有用。 (  圖片貼上不了,我把教程和涉及到的軟體都上傳到下面的連結去了)

VB.NETDLL編寫和呼叫的簡單示例

VB.NET中的DLL編寫和呼叫的最簡單示例  DLL(動態連結庫)是一個很有用的東西,在開發大專案的時候顯得非常重要,因為多人合作開發時,可以給每個人分配一個任務,用DLL完成,最後組合起來,就不會出現互相沖突的問題。這裡給出最簡單的DLL編寫與呼叫的示例,本人水平不高

C#封裝的dll檔案在Labview呼叫

  操作步驟 1.開啟vi的後面板,右鍵單擊選擇“Connectivity”------“.NET”--------"ConstructorNode"此時會彈出窗。選擇所需dll檔案             &nb

[轉]在C#呼叫C語言函式(靜態呼叫Native DLL,Windows & Microsoft.Net平臺)

原文:https://blog.csdn.net/yapingxin/article/details/7288325   對於不太瞭解.Net的人,如果想要了解.Net,我必須給他介紹P/Invoke。P/Invoke是什麼呢?簡單地說,就是在.Net中呼叫原生代碼(Native code)的一

四個dll檔案引發的“血案”——呼叫DLL的函式

喵哥專案的合作公司最近給喵哥出了個難題——專案中鐳射雷達的模組是公司一個工程師負責的,工程師比較務實,在網上一個VB.NET程式碼的基礎修改了一些細節,就交差了,的確可以用,但是最近工程師退出了這個專案,boss打算讓喵哥接手這個模組,喵哥很慌,但還是硬著頭皮上了。 面臨的

續:Java Tomcat 呼叫.net DLL的方法 -- Can't get object clsid from progid

先使用以下測試程式碼,判斷是否時自己的dll出現問題  ActiveXComponent xl = new ActiveXComponent("Excel.Application"); Dispatch xlo = (Dispatch)(xl.getOb

java通過JNA呼叫dll JNI的替代者—使用JNA訪問Java外部功能介面

---恢復內容開始--- 1. JNA簡單介紹 先說JNI(Java Native Interface)吧,有過不同語言間通訊經歷的一般都知道,它允許Java程式碼和其他語言(尤其C/C++)寫的程式碼進行互動,只要遵守呼叫約定即可。首先看下JNI呼叫C/C++的過程,注意寫程式時自下而上,呼叫時自上而下

如何呼叫DLL的函式

如何呼叫 DLL 中的函式 在 DLL工程中的 cpp中函式定義如下: extern "C" _declspec (dllexport )       int add(int a, char b) {       return a + b; } 一:顯示連結 呼叫的 DLL的主工程的 main檔案中程

利用c#實現dll動態庫,並在c++呼叫的方法

           近期,在進行一個大專案開發。其中涉及多語言協同開發。主要是c#dll和c++dll的開發和應用,其中,需要在c++中呼叫c#dll的內容。現在把開發中的經驗、教訓和注意事項總結整理如下,希望對其他人能有所幫助。           1.建立c#dll,

C#專案呼叫C++生成的Dll 入門教程

1、首先建立一個C++ 的dll 專案(Dll_Cpp)並生成,會得到這三個檔案: Dll_Cpp.dll   //動態庫 Dll_Cpp.lib   //靜態庫 Dll_Cpp.h    //標頭檔案 其中Dll_Cpp.h的程式碼如下: // 下列 ifdef 塊是建

.net WinForm程式呼叫Visual Studio IDE 資料連線配置介面 (一個DLL搞定)

玩過直接調 資料庫配置介面的一定對如下三個東西不陌生 Microsoft.Data.ConnectionUI.Dialog.dll -- 微軟自帶的資料連線配置介面庫 Microsoft.Data.ConnectionUI.dll --微軟自帶的資料連線配置介面庫 Micr

將VBA操作封裝為DLL元件並在EXCEL呼叫

使用程式: 1、Microsoft Office Excel 2003 2、Microsoft Visual Basic 6.0 案例:在工作表的C1單元格得出A1單元格+B1單元格的值。 設計的VBA程式碼: Sub Test()     On Error

C# 獲取資原始檔DLL呼叫DLL的方法

轉自:http://blog.163.com/[email protected]/blog/static/16920433220127193511096/ usingSystem;usingSystem.Collections.Generic;usingSyst

java呼叫C/C++編寫的生成的動態連線庫dll檔案介面的簡單例子

1、首先用java編寫一個簡單類 public class Hello { public native void sayHello(); static { System.loadLibrary("HelloDll"); } public static void

Qt程式呼叫C#編寫的dll

最近在使用Qt整合以前的一個工具時,發現有幾個dll是採用C#寫的,當然可以把C#寫的dll重新在Qt中用C++寫,雖然這是幾個C#寫的dll的函式介面使用的引數都比較簡單,只用了int和string型別等,但在函式內部卻還使用了C#的專用一些類,如果重寫還是很麻煩,就查找了