1. 程式人生 > >用swift+Metal shader檔案編譯framework動態庫

用swift+Metal shader檔案編譯framework動態庫

若想用swift語言生成庫則只能生成動態庫,若是純swift程式碼指令碼,問題不大,按一般流程就行。
若是編譯的庫中有shader檔案則需要先編譯出Metal庫。具體方法可採用如下的方式。

  1. 把shader檔案和swift檔案放在一起進行framework庫的編譯。編譯成功後會自動生成一個default.metallib檔案,該檔案為shader生成的庫檔案。
  2. 把生成的framework匯入需要呼叫的地方,注意使用庫時需要單獨把default.metallib取出來放到工程中的Resource下面。
  3. 使用let library = device.newDefaultLibrary()直接載入Metal庫。
guard let metallibpath = Bundle(for: type(of: self)).path(forResource: "YourShader", ofType: "metallib") else {
                fatalError("Metal library not found")
            }
let library = try device.makeLibrary(filepath: metallibpath)
if library == nil{
                print("metal library is null"
) }

相關推薦

swift+Metal shader檔案編譯framework動態

若想用swift語言生成庫則只能生成動態庫,若是純swift程式碼指令碼,問題不大,按一般流程就行。 若是編譯的庫中有shader檔案則需要先編譯出Metal庫。具體方法可採用如下的方式。 把sh

Lunix下codeblocks靜態(.a檔案)及動態(.so檔案編譯

Lunix 下靜態庫.a檔案相當於windows下.lib檔案,.so檔案相當於windows下.dll檔案,下面來說一下編譯他們的一種方法(不唯一,可以通過terminal編譯)。 1.編譯.a檔案

Makefile 編譯動態檔案及連結動態

原文轉自 :http://www.cnblogs.com/ljtknowns/p/5647793.html 檔案目錄結構如下 1 dynamiclibapp.c 2 Makefile 3 comm/inc/apue.h 4 comm/errorhandle.c 5

linux下g++ 編譯動態和靜態的連結和標頭檔案問題

原來編譯的時候都是用的很隨意,沒用系統的總結一下,這幾天在編譯的時候遇到一些下問題,於是就總結一下,省得過幾天又給忘了。 1.動態庫和靜態庫簡介 靜態庫在程式連結的時候會自動的連結到程式裡,所以一旦編譯完成,靜態庫就不需要了,靜態庫以.a結尾。  動態庫在編譯時不會被連線到目的碼中,而是在程式執行

依賴靜態編譯生成動態

如需轉載請註明出處! 直入主題,目標是依賴靜態庫,編譯動態庫,最終生成二進位制檔案。 檔案目錄如下: 檔案內容組織: add.c #include "add.h" int add(int a, int b) { int c = a + b; re

Linux FFmpeg 編譯so動態

   Linux平臺FFmpeg的編譯非常簡單:     1.獲取FFmpeg原始碼,下載或clone.        下載:        地址: http://ffmpeg.org/downloa

在ubuntu下使用cmake進行opencv的配置和Windows下進行使用cmake編譯原始碼比較,opencv3進行g++例子程式編譯動態的製作

1.首先安裝的是cmake軟體,使用指令: apt-get install cmake 接著檢視版本,測試是否安裝成功: [email protected]:/home# cmake --version cmake version 2.8.10.2 由於我們需要

/etc/ld.so.conf詳解 及 編譯尋找動態路徑解析

轉自  http://www.cnblogs.com/chris-cp/p/3591306.html /etc/ld.so.conf 此檔案記錄了編譯時使用的動態庫的路徑,也就是載入so庫的路徑。    預設情況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的

【Android音視訊】ubuntu編譯ffmpeg動態

參考文章 1. 編譯環境 NDK:android-ndk-r15c FFMPEG: ffmpeg-3.4.4 Android P: 21(該環境限制最少21) Ubuntu:18.0.1 部分安裝庫 sudo apt-get -y i

【C語言】【unix c】如何察看可執行檔案依賴哪些動態

5、如何察看可執行檔案依賴哪些動態庫: 【ldd 可執行檔案的名字】:列印程式或庫檔案所依賴的共享庫列表 舉例: tarena@ubuntu:~/day/day24$

mac os x 將C檔案編譯成.so

應用背景 將C語言寫好的程式碼提供給unity呼叫,專案要在Android手機上執行,所以要將C程式碼編譯成.so庫。因為要用到opencv對影象操作,這裡把opencvsdk也放進去了。 步驟: 1、下載安裝Android studio(其實也可以不下載,樓主為了省事,

vs2015使用MinGW編譯動態

工作過程中經常會遇到使用其他開源專案的情況,有些開源專案有vs工程,比如opus,可以直接編譯出vs可識別的動態庫或靜態庫,但有些開源專案則沒有,此時想要做的就是利用該原始碼編譯一個或多個庫來使用。 MinGw完全可以勝任這些工作,它可以安裝autoconf、automak

Linux程式編譯連結動態版本的問題

不同版本的動態庫可能會不相容,如果程式在編譯時指定動態庫是某個低版本,執行是用的一個高版本,可能會導致無法執行。Linux上對動態庫的命名採用libxxx.so.a.b.c的格式,其中a代表大版本號,b代表小版本號,c代表更小的版本號,我們以Linux自帶的cp

編譯.so動態隱藏函式名

     在我們提供給別人使用的動態連結庫so檔案時,其內部實現函式的名稱,特別是一些關鍵名稱我們是不希望別人見到然後反向的,這時候一般有兩種處理方式:一是把程式中關鍵詞修改了再編譯,比較蠢笨;二是通過編譯的方式將字符隱藏,gcc編譯器提供了這個選項,即在編譯選項中加入-fvisibility=hidden選

表格樹控制元件QtTreePropertyBrowser編譯動態(設計師外掛)

目錄 一、回顧 二、動態庫編譯 1、命令列編譯動態庫和測試程式 2、vs工具編譯動態庫和測試程式 3、安裝文件 4、測試文件 三、設計師外掛編

Android:JNI與NDK(二)交叉編譯動態,靜態

  歡迎關注公眾號,第一時間獲取最新文章:   本篇目錄 一、前言 本篇主要以window開發環境為背景介紹一下NDK開發中需要掌握的交叉編譯等基礎知識,選window系統主要是照顧大多數讀者,mac ,linux作業系統基本是同樣適用的。 交叉編譯就是在A平臺編譯出可

Makefile編譯靜態檔案動態檔案

    最近要用到的簽名演算法只給了一堆原始碼沒有給庫檔案,api都不好呼叫,於是嘗試著用Makefile給一堆c原始碼編譯靜態連結庫檔案和動態連結庫檔案。 Makefile檔案編輯的相關資料連結: https://www.cnblogs.com/yya

thrift 編譯調boost動態

thriftIn the project properties you must also set HAVE_CONFIG_H as force include the config header: "windows/confg.h"By default lib/cpp/windows/force_inc.h

安卓之Android.mk多檔案以及動態編譯

1、多檔案編譯 多檔案編譯共有兩種方式:   (1) 在Android.mk中一一新增       LOCAL_PATH:= $(call my-dir) #定義當前模組的相對路徑       include $(CLEAR_VARS)      #清空當前環境變數       LOCAL_MO

linux關於執行編譯後命令找不到動態.so檔案的解決辦法。

方法一:(沒有root許可權)利用find找到報錯動態庫檔案目錄lib路徑,vim /home/xxx/.bashrc 新增一行: export LD_LIBRARY_PATH=動態庫/lib:$LD_LIBRARY_PATH 然後 source /home/xxx/.bashrc