golang的cgo的一點小心得

最后有個項目需要涉及到cgo,在這塊以前用的不多,

這次略微用得深入了一點,記下來幾點以備以后使用

本質上cgo去用的時候就是遵守一些ABI而已,總體而言,盡量避免復雜結構的來回傳遞。1  對于變長參數,只有寫一個個c的方法,比如static方法wrap一下成非變長的,當然這樣羅嗦但是沒辦法
2 對于enum,可直接使用,c語言的void*對應著unsafe.Pointer3 比較復雜的是對于需要傳一個函數指針/回調函數的,只有走曲線救國的路線,即傳一個c寫的wrap->調用go export的的方法(其實就是通過//export導出加_cgo_export.h即可讓c使
用),排查問題的時候可通過-work保留中間生成的.h文件。當然在這之上略微進階一點是玩個trampoline,其實注是加了個中間層,這樣可以支持go的閉包。 4 庫的加載自己采用pkg-config(macos/linux上都可以,windows不可以),即macos上開發,docker(linux)跑。

后話:

? ? ? ?為了玩這個,我找了個開源的好好讀了一下,同時為了更深入一點,把別人的c代碼也讀了一下,同時為了更好玩,我選擇了Rust(這個也是我喜歡玩的語言之一,但是要看場景 ),Rust的FFI的話那確實是更適合做這種綁定,更別說Rust更鼓勵做static而不是share的庫,可能背后也跟golang有自己的運行時,和c其實映射上也做不到rust那樣簡單,或許這就是rust零抽象的一個具體體現吧.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902960.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902960.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902960.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

異構網絡環境下的切換策略研究

移動互聯網應用快速崛起,現有的無線接入技術有,無線局域網(Wireless Local Area NetWork,WLAN),移動蜂窩網絡(4G,5G),無線廣域網(Wireless Wide Area Network,WWAL)以及衛星通信網絡等。多接入技術方便用戶通信,還符合多業務場景。這種多無線接入技術共存的網絡環…

人工智能賦能美妝零售數字化轉型:基于開源AI大模型的S2B2C商城系統構建

摘要 在消費升級背景下,美妝行業正經歷從傳統賣場向智能體驗空間的轉型。本文以"未來商店"為研究對象,探討開源AI大模型與S2B2C商城系統的協同效應,揭示人工智能技術如何重構"人-貨-場"關系。通過實證研究發現&#xff…

計算機視覺中的正則化:從理論到實踐的全面解析

🌟 計算機視覺中的正則化:從理論到實踐的全面解析🌟 大家好!今天要和大家分享的是在計算機視覺(CV)領域中非常重要的一個概念——正則化(Regularization)。無論你是剛開始接觸深度學…

Linux字符設備驅動開發的詳細步驟

1. 確定主設備號?? ??手動指定??:明確設備號時,使用register_chrdev_region()靜態申請(需確保未被占用)。??動態分配??:通過alloc_chrdev_region()由內核自動分配主設備號(更靈活,推…

軟件工程效率優化:一個分層解耦與熵減驅動的系統框架

軟件工程效率優化:一個分層解耦與熵減驅動的系統框架** 摘要 (Abstract) 本報告構建了一個全面、深入、分層的軟件工程效率優化框架,旨在超越簡單的技術羅列,從根本的價值驅動和熵減原理出發,系統性地探討提升效率的策略與實踐。…

【Docker游戲】使用Docker部署vue-XiuXianGame文字修仙小游戲

【Docker游戲】使用Docker部署vue-XiuXianGame文字修仙小游戲 一、vue-XiuXianGame介紹1.1 vue-XiuXianGame簡介1.2 主要特點 二、本次實踐規劃2.1 本地環境規劃2.2 本次實踐介紹 三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本 四、拉…

用 LangChain 手搓 RAG 系統:從原理到實戰

一、RAG 系統簡介 在當今信息爆炸的時代,如何高效地從海量數據中獲取有價值的信息并生成準確、自然的回答,成為了人工智能領域的重要課題。檢索增強生成(Retrieval-Augmented Generation,RAG)系統應運而生,…

SpringBoot集成LiteFlow實現輕量級工作流引擎

LiteFlow 是一款專注于邏輯驅動流程編排的輕量級框架,它以組件化方式快速構建和執行業務流程,有效解耦復雜業務邏輯。通過支持熱加載規則配置,開發者能夠即時調整流程步驟,將復雜的業務如價格計算、下單流程等拆分為獨立且可復用的…

38 python random

在實際中,我們常常會用到隨機的概念,比如 模擬抽獎活動(如:月度優秀員工抽獎)生成測試數據(如:隨機考勤時間、隨機銷售額)打亂數據順序(如:隨機分配任務到人)Python 的random模塊就像你的 "隨機事件生成器",幫你輕松創建各種隨機數據 一、基礎操作:從隨…

附贈二張圖,闡述我對大模型的生態發展、技術架構認識。

文章精煉,用兩張圖說明大模型發展業態方向,以及大模型主體技術架構。(目前還需要進一步驗證我的Thought && ideas,等待機會吧.........) 圖一:探究大模型三個層次應用方向,淺層次入門簡…

2025上海車展 | 移遠通信全棧車載智能解決方案重磅亮相,重構“全域智能”出行新范式

2025年4月23日至5月2日,第二十一屆上海國際汽車工業展覽會在國家會展中心(上海)盛大啟幕。作為車載智能解決方案領域的領軍企業,移遠通信以“全域智能 馭見未來”為主題,攜豐富的車載解決方案及客戶終端驚艷亮相8.2館8…

告別 “幻覺” 回答:RAG 中知識庫與生成模型的 7 種對齊策略

一、引言 大語言模型(LLM)在文本生成領域展現出驚人能力,但 “幻覺” 問題(生成虛構或偏離事實的內容)始終是落地應用的核心挑戰。檢索增強生成(RAG)通過將外部知識庫與 LLM 結合,形…

項目筆記2:post請求是什么,還有什么請求

在 HTTP(超文本傳輸協議)中,請求方法用于向服務器表明客戶端想要執行的操作。POST 請求是其中一種常見的請求方法,此外還有 GET、PUT、DELETE 等多種請求方法,下面為你詳細介紹: POST 請求 定義&#xff…

中間系統-鄰居建立,數據庫同步

ISIS鄰居狀態: 1、Down:接口一旦啟用ISIS協議之后就是Down狀態 2、Init:收到了鄰居的Hello報文后,發現了鄰居。 3、up:收到了鄰居的Hello報文,并且在鄰居的hello報文中發現了自己。 ISIS鄰居建立的條件&…

玩轉Docker | Docker部署LMS輕量級音樂工具

玩轉Docker | Docker部署LMS輕量級音樂工具 前言一、LMS介紹LMS簡介主要特點二、系統要求環境要求環境檢查Docker版本檢查檢查操作系統版本三、部署LMS服務下載鏡像創建容器創建容器檢查容器狀態檢查服務端口安全設置四、訪問LMS服務訪問LMS首頁注冊賬號五、基本使用上傳音樂文…

AR行業應用案例與NXP架構的結合

1. 工業巡檢AR頭盔 場景示例:寧德核電基地使用AR智能頭盔進行設備巡檢,通過實時數據疊加和遠程指導,將工作效率提升35%。頭盔需處理傳感器數據、圖像渲染和低延遲通信1。 NXP架構支持: 協處理器角色:NXP i.MX RT系列M…

【Harmony OS】組件

目錄 組件概述 組件常用屬性 系統內置組件 Text TextArea 多行文本輸入框組件 TextInput 文本輸入框 Button Image 圖片組件,支持本地圖片和網絡圖片 Radio 單選框 Checkbox 復選框 Blank 空白填充組件 Divider 分隔符 PatternLock 圖案密碼鎖組件 Prog…

Flutter Dart 集合類型List Set Map詳解軍 以及循環語句 forEaclh map where any every

List基礎用法 var list1 ["西瓜", "蘋果", "香蕉", true, 0];var list2 <String>["西瓜", "蘋果", "香蕉"];List list3 ["西瓜", "蘋果", "香蕉"];list3.add("草莓&…

在網上找的資料怎樣打印出來?

在數字化時代&#xff0c;我們經常需要從互聯網上獲取各種資料&#xff0c;無論是學術論文、工作文檔還是學習資料。然而&#xff0c;如何高效地將這些網上的資料打印出來&#xff0c;卻是一個值得探討的問題。本文將為您提供一個全面的解決方案&#xff0c;幫助您輕松完成網上…

2025年計算機視覺與智能通信國際會議(ICCVIC 2025)

2025 International Conference on Computer Vision and Intelligent Communication 一、大會信息 會議簡稱&#xff1a;ICCVIC 2025 大會地點&#xff1a;中國杭州 收錄檢索&#xff1a;提交Ei Compendex,CPCI,CNKI,Google Scholar等 二、會議簡介 2025年計算機視覺與智能通…