iOS 從C移植項目到Objective-C

来源:http://www.cnblogs.com/284628487a/archive/2016/05/30/5541289.html
-Advertisement-
Play Games

新建項目 iOS | Framework & Library Cocoa Touch Static Library 新建一個Library庫 1. M.h頭文件 2. M.c實現文件 cmd + B 編譯,此時只編譯模擬器了版本,可以連接手機編譯真機版本靜態庫文件,編譯成功後會在電腦上生成相關的.a ...


新建項目
  iOS | Framework & Library
    Cocoa Touch Static Library

新建一個Library庫

1. M.h頭文件

#ifndef M_h
#define M_h

#include <stdio.h>
void testSleep(int t); void testPthread(int n); ​#endif /* M_h */

2. M.c實現文件

#include "M.h"
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>

void testSleep(int t)
{
   printf("testSleep:\n");
   int i;
   for (i=0; i<10; i++)
   {
       printf("sleep...\n");
       usleep(t*1000);
       printf("return...\n");
   }
}

void *thrFun(void *p)
{
   int t = (int)p;
   int i;
   for (i = 0; i<5; i++)
   {
       printf("thrFun  %d\n", t);
       sleep(1);
   }
   return NULL;
}

void testPthread(int n)
{
   void *retval;
   pthread_t *tid = (pthread_t *)malloc(sizeof(pthread_t)*n);
   int i;
   for (i=0; i<n; i++)
       pthread_create(&tid[i], NULL, thrFun, (void *)i);
   for (i=0; i<n; i++)
       pthread_join(tid[i], &retval);
}

cmd + B 編譯,此時只編譯模擬器了版本,可以連接手機編譯真機版本靜態庫文件,編譯成功後會在電腦上生成相關的.a靜態庫文件;

libM.a文件所在目錄

/Users/xx/Library/Developer/Xcode/DerivedData/M-xxx/Build/Products/Debug-iphonesimulator
/Users/xx/Library/Developer/Xcode/DerivedData/M-xxx/Build/Products/Debug-iphoneos

兩個路徑分別是模擬器,真機版本的輸出目錄。

將libM.a庫文件和M.h頭文件拷貝到外部項目即可使用靜態庫裡面的函數了。

 

查看 .a 文件支持的平臺

通過lipo命令來查看

lipo -info xxLibrary.a

輸出結果:

Architectures in the fat file: xxLibrary.a are: armv7 armv7s i386 x86_64 arm64 

上面幾個平臺分別對應的手機

  • armv7是iphone5之前的設備指令集架構;
  • armv7s是iphone5、iphone 5s的指令集架構;
  • arm64是iphone6、iphone 6plus的指令集架構;
  • i386以及x86_64是MAC的指令集架構;

查看 .framework 文件支持的平臺

lipo -info ./****.framework/****

輸出結果:

Architectures in the fat file: ./****.framework/**** are: i386 armv7 armv7s 

如此便可查看你工程中的靜態庫是否支持64位。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Div層拖動效果圖: 實現: CSS: View Code <style> div { position:relative; } </style> JS: View Code <script type="text/javascript"> var mouseover=true var xcoor; ...
  • 在JavaScript 中,this的指向是動態變化的,很可能在寫程式的過程中,無意中破壞掉this的指向,所以我們需要一種可以把this的含義固定的技術,於是就有了call,apply 和bind這三個方法,來改變函數體內部 this 的指向,因為函數存在「定義時上下文」和「運行時上下文」以及「上 ...
  • <!doctype html><html><head><meta charset="utf-8"><title>CSS壓縮混淆 / 格式化 / 美化工具</title><style type="text/csss">@charset "utf-8";/* CSS Document */ *{marg ...
  • CSS有一種基礎設計模式叫盒模型,定義了Web頁面中的元素是如何看做盒子來解析的。每一個盒子有不同的展示界面,下麵就來介紹盒模型,主要有一下幾種盒模型:inline、inline-block、block、table、absolute position、float。瀏覽器把每個元素看做一個盒模型,每個 ...
  • 《用electron製作俄羅斯方塊游戲》 後續文章,智能程式玩俄羅斯方塊游戲。 背景 前不久用ES6完成了基本的俄羅斯方塊游戲,今天已經完成了一個初步的智能演算法,可以自動玩俄羅斯方塊了,讓自己的想法朝實現更近了一步。 效果圖 第一次運行,消除了1398行,竊喜! 程式結構 主要關註智能演算法,結構簡單 ...
  • 無論你是新開發者還是經驗豐富的老程式員,前端框架可以有效地在開發的早期階段提升開發效率。在這篇文章中,我們選擇了15個新框架分享給開發人員,你肯定會想嘗試一下這些新鮮的框架。 ...
  • sass和scss的區別 sass是以嚴格的縮進式語法規則來書寫,不帶大括弧({})和分號(;),scss和css寫法比較相似 Sass的編譯的過程中,是不是支持“GBK”編碼的。所以在創建 Sass 文件時,就需要將文件編碼設置為“utf-8 sass覆蓋預設變數值是在他之前重新聲明變數值(!de ...
  • 一、Transition(過濾) 作為一個基礎支持的組件,被其他組件多次引用。實現根據瀏覽器支持transition的能力,然後綁定動畫的結束事件;首先:創建一個Element;然後:迭代查看此元素支持的transition動畫名稱Transition實現的技巧,主要是重寫了jquery的event ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...