当前位置: 首页 > 面试题库 >

在Linux上的Swift中使用C库

张晔
2023-03-14
问题内容

我知道如何在Mac OS上使用Xcode在Swift中访问C库,并且import Glibc在Linux上也知道,但是如何在Linux上使用Swift这样的C库,如OpenGL?


问题答案:

使用系统模块导入OpenGL头文件:https :
//github.com/apple/swift-package-
manager/blob/master/Documentation/SystemModules.md

假设您的目录布局如下:

COpenGL/
  Package.swift
  module.modulemap
  .git/

YourApp/
  Package.swift
  main.swift
  .git/

COpenGL / module.modulemap文件将类似于:

module COpenGL [system] {
    header "/usr/include/gl/gl.h"
    link "gl"
    export *
}

这必须在单独的git repo中创建,并带有一个version标签

touch Package.swift
git init
git add .
git commit -m "Initial Commit"
git tag 1.0.0

然后在YourApp / Package.swift文件中将其声明为依赖项

import PackageDescription

let package = Package(
    dependencies: [
        .Package(url: "../COpenGL", majorVersion: 1)
    ]
)

然后可以在main.swift文件中将其导入:

import COpenGL
// use opengl calls here...


 类似资料:
  • 问题内容: 是否有使用C 读取用于Linux的INI文件等配置的标准方法? 我正在基于Linux的手持设备上工作,并用C编写代码。 否则,我想知道其他选择。 最终更新: 我已经探索甚至使用过LibConfig。但是占用空间很大,而且我的用法太简单了。因此,为了减少占用空间,我推出了自己的实现。该实现不是太通用,实际上到目前为止已经相当耦合了。启动应用程序时,配置文件将被解析一次,并设置为一些全局变

  • 问题内容: 我想使用系统蜂鸣器(并且只有在没有蜂鸣器/无法访问蜂鸣器时才使用扬声器)生成具有特定频率和长度(针对不同的声音信号)的蜂鸣声。我知道可以通过使用ioctl来做到这一点,但这需要root访问权限,而这是我所不希望的。 我知道我可以只使用“ beep”命令,但这将是一个依赖关系,如果可能的话,不应使用它(根本没有外部依赖关系,只有基本的linux库和C)。 我目前拥有的是以下代码(但这需要

  • 问题内容: 我正在尝试跟踪网络状态。我浏览了FXReachability的代码。具体来说有以下方法。 它所做的是不断检查与指定主机的连接。我正在尝试将此方法转换为Swift,但遇到了一些问题。 1.将主机字符串转换为UTF8。 我必须将主机字符串转换为UTF8并将其传递给SCNetworkReachabilityCreateWithName方法。我在Objective- C中找不到与属性完全相同的

  • 问题内容: 在Linux上是否使用线程安全写入stdout ?使用下级命令怎么办? 问题答案: 它不是C标准指定的-取决于您对C标准库的实现。实际上,C标准甚至根本没有提到线程,因为某些系统(例如嵌入式系统)没有多线程。 在GNU实现()中,stdio中处理对象的大多数高级函数都是线程安全的。通常没有名字的(例如)。但是,线程安全性处于每个函数调用级别:例如,如果您多次调用,则保证每个调用都是原子

  • 问题内容: 平台:Debian Wheezy 3.2.0-4-686-pae 编译器:GCC(Debian 4.7.2-5)4.7.2(代码:: Blocks) 我想将文件从一个位置移动到另一位置。移动到不同的驱动器或文件系统没有什么复杂的。我知道执行此操作的“标准”方法是简单地复制文件,然后删除原始文件。但是我想要某种方式来保留文件的所有权,模式,上次访问/修改等。我假设我必须先复制文件,然后再

  • 问题内容: 我正在将我的项目从Objective-c转换为Swift,并且正在使用一个Swift类,我正在尝试在Objective- c类中进行访问。我的问题是,在Objective-C类中不可访问。这是我的速成班: 当我查看文件时,看不到: 当我尝试在我的Objective-c类中使用时,出现编译器错误。 有人知道这个问题吗?如何在Objective-c中访问Swift协议? 问题答案: 您需要