首页
学习
活动
专区
圈层
工具
发布

【仓颉】创建静态库及使用

——摘自仓颉首页[1] 本文将逐步实现仓颉静态库的创建和使用,使用的当前版本为0.51.4。...前置条件 关于Win11 + VSCode的开发环境,请参考这篇文章[2] 创建静态库项目 在VSCode中使用快捷键ctrl + shift + p 在上方的输入框中搜索Create Cangjie...库的名称statictest是创建工程的时候设定的。另外可以看到项目根目录中的cjpm.toml中name字段。这个字段的值设置了三方库的名称。...这里为了区分名称,我在之前写库的时候,包名和库名特地写成了不一样的。还记得吗?statictest是库工程中cjpm.toml的name字段。...statictestpack是库项目中,demo.cj开头声明的package。 这样引入刚才的静态库之后,就可以在下方的代码中调用cjadd()方法了。

66010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    创建并使用静态库(ar 命令)

    创建并使用静态库(ar 命令) archive命令的功能是:创建或改动归档文件或者从归档文件里析取信息。...能够简单的理解为一个打包工具,将成员文件依照一定的规则构建到.a文件里,通常这样的类型的归档文件用来将经常使用的例程组织为一个静态库,方便应用程序的链接。...重要參数: d – 从archive中删除模块,若指定v选项的话还会在删除的过程中信息打印; r – 以替换的方式添加模块; c – 强制创建一个库。无论已存在与否。...s – 为库中的可重定位目标文件创建符号索引或者更新, 对一个库运行ar -s等价于对其运行ranlib命令。...t – 列表显示出archive中的内容; 用例:把经经常使用到的例程编译后的可重定位目标文件。用ar构建一个静态库。demo例如以下: 注:gcc -L 表示指定搜索库的路径。

    1.3K10

    iOS 静态类库项目的创建与使用

    iOS 静态类库项目的创建与使用 新建 Xcode workspace 打开 Xcode , 选择 File -> New -> Workspace , 将 Workspace 命名为 Test.xcworkspace...新建 Static Library 项目 选择 File -> New -> Project , 项目模板选择 Cocoa Touch Static Library , 项目名称命名为 MyLib.xcodeproj...使用静态类库项目 选择 File -> New -> Project , 项目模板选择 iOS -> Application -> Single View Application , 项目名称命名为 MyApp...connectButtonClick: 方法, 在 addButtonClick: 方法中调用 MyLib 的实例方法 add:and: , 在 connectButtonClick: 方法中调用 MyLib 的静态方法...NSString* str1 = self.textField1.text; NSString* str2 = self.textField2.text; // 调用 MyLib 的静态方法连两个字符串

    1K10

    linux动态库和静态库的使用_静态库的使用

    文章目录 动静态库的基本原理 认识动静态库 动静态库各自的特征 静态库的打包与使用 打包 使用 动态库的打包与使用 打包 使用 动静态库的基本原理 动静态库的本质是可执行程序的“半成品...认识动静态库 在Linux下创建文件编写以下代码,并生成可执行程序。...而gcc/g++编译器默认都是动态链接的,若想进行静态链接,可以携带一个-static选项。...缺点: 使用静态库生成可执行程序会占用大量空间,特别是当有多个静态程序同时加载而这些静态程序使用的都是相同的库,这时在内存当中就会存在大量的重复代码。...使用 创建源文件main.c,编写下面这段简单的程序来尝试使用我们打包好的静态库。

    5.6K21

    【LinuxC++】Linux下C++命令行编译示例

    使用-Wall、-std 参数进行编译 2.1.3....使用-Wall、-std 参数进行编译 -Wall 代表程序编译过程中输出警告信息,-std代表使用特定的 c++标准 进行编译,如下命令 # 使用c++11标准进行编译,并且使用-Wall参数 g++...+ main.cpp src/swap.cpp -Iinclude -Wall -std=c++11 -o b.out 此时出现如下图警告 因为定义一个变量不使用,是不符合c++11的标准的,但不是错误...生成库文件 我们先删除在 2 中会进行警告的代码 链接静态库生成可执行文件 # 先进入src目录 cd src # 汇编生成swap.o 文件 g++ swap.cpp -c -I...../include # 生成静态库libSwap.o ar rs libswap.a swap.o # 回到代码根目录,调用静态链接库生成可执行文件 g++ main.cpp -lswap -Lsrc -

    2.8K20

    《C++11》静态断言(Static Assert)的使用与优势

    本文将详细介绍静态断言的定义、使用场景和优势。什么是静态断言(Static Assert)?静态断言是C++11新引入的一种编译时断言机制。...约束模板参数:在模板编程中,静态断言可以用来约束模板参数,确保它们满足特定的条件:template class E { static_assert(std::is_base_of...延迟计算:如果静态断言的常量表达式依赖于某些模板参数,则延迟到模板实例化时再进行演算。适用范围:静态断言可以用在全局作用域中,命名空间中,类作用域中,函数作用域中,几乎可以不受限制地使用。...结论静态断言是C++11引入的一种强大的编译时检查机制,它可以帮助我们在编译阶段就发现错误,提高代码的质量和稳定性。...通过使用静态断言,我们可以在编译时期就检查代码逻辑,发现和修复潜在的错误,提高代码的可读性和可维护性,增强类型安全性,约束模板参数,减少运行时开销。

    39800

    c++11:nlohmann::json进阶使用(三)使用basic_json模板类

    nlohmann::json是非常好用的一个json开源解析库.nlohmann/json的源码是基于C++11标准写的,整个源码就是一个文件 nlohmann/json.hpp,引用非常方便。...关于nlohmann/json的基本使用官网(https://github.com/nlohmann/json)上有比较详细的介绍。...这里不再赘述,本文主要是介绍在nlohmann/json的基本使用之外一些我在使用 nlohmann/json 用到的一些扩展功能和重要但不太被了解的特性。...我的上一篇博客里解决了第三方数据类型序列化和反序列化的问题 《c++11:nlohmann::json进阶使用(二)应用adl_serializer解决第三方数据类型(such as uri)的序列化和反序列化...如果要实现对basic_json模板类的完全支持,to_json,from_json的模板参数就需要定义basic_json的所有模板参数 参照json.hpp中的宏定义方式如下实现: nlohmann_json_test4

    3.8K10

    静态库和动态库的使用

    库是一种可执行的二进制文件,是编译好的代码。使用库可以提高开发效率。在 Linux 下有静态库和动态库。 静态库在程序编译的时候会被链接到目标代码里面。所以程序在运行的时候不再需要静态库了。...静态库的制作步骤: 编写或准备库的源代码 将源码.c 文件编译生成.o 文件 使用 ar 命令创建静态库 测试库文件 动态库制作步骤: 编写或准备库的源代码 将源码.c 文件编译生成.o 文件 使用 gcc...命令创建动态库 测试库文件 静态库 新建 mylib.c 文件: #include void mylib(void); void mylib(void) { printf("...表示在当前目录下去查找 运行测试 a.out 在动态库使用是,系统会默认去/lib,/usr/lib 目录下去查找动态函数库,如果我们使用的库不在里面,就会提示错误。解决这个问题有三种方法。...,然后使用命令 ldconfig 更新目录。

    1.4K20

    使用静态内部类来创建单例

    我们都知道创建单例模式有懒汉,饿汉。但是我们还可以利用类的加载机制,和静态内部类来创建单例。 静态内部类什么时候加载?...2.使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没进行初始化,需要先调用其初始化方法进行初始化。...5.当使用JDK 1.7等动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REF_getStatic、REF_putStatic、REF_invokeStatic...故而,可以看出INSTANCE在创建过程中是线程安全的,所以说静态内部类形式的单例可保证线程安全,也能保证单例的唯一性,同时也延迟了单例的实例化。...那么,是不是可以说静态内部类单例就是最完美的单例模式了呢?其实不然,静态内部类也有着一个致命的缺点,就是传参的问题,由于是静态内部类的形式去创建单例的,故外部无法传递参数进去。

    1.2K10

    使用Cocoapods创建私有库

    1、创建私有Spec Repo Spec Repo其实类似一个容器,里面装着所有的公开的Pods,当使用Cocoapods后,他就会被clone到本地的~/.cocoapods/repos目录下: ?...因此我们也需要创建一个私有的Spec Repo,因为是公司项目,所以我们搞一个私有库,这次是我单独的练习,GitHub上创建私有库是收费的,所以这次我采用了免费的Git服务,我用的是Coding,首先需要在...*一定要记住自己的创建的私有库一定不要跟Github上的第三方库重名,否则会搜不到,我博客里面有的是ZJPodPrivateTest有的是ZJPodTest,就是因为ZJPodTest跟Github上的一个第三方库重名了...至此,自己的私有库就算制作好了 5、使用制作好的Pod 在Podfile文件中,内容如下: source 'https://github.com/CocoaPods/Specs.git' # 官方库...pod lib lint 验证的时候一直报这个错,原因是私有库中添加了动态库或者静态库,解决方案: pod lib lint --use-libraries --use-libraries:表示使用静态库或者是

    1.5K30

    Modern C++,学炸了!!

    它们包括但不限于: 指针和引用的概念 指针与内存关系 程序编译过程,静态链接库和动态链接库 static、const、#define的用法和区别 C和C++区别 内存中的栈和堆分配 C++ 面向对象语法...例如,对于 C++11 新增的智能指针类 std::shared_ptr、std::unique_ptr,C++11 新增了std::make_shared() 方法创建一个 std::shared_ptr...对象,却没有提供相应的 std::make_unique() 方法创建一个 std::unique_ptr 对象,这个方法直到 C++14 才被添加进来。...对于 gcc/g++ 编译器,支持 C++11 新标准的最低版本是 gcc/g++ 4.8,支持 C++14 是 gcc/g++ 4.9,gcc/g++ 7.3 完美支持 C++17 大多数语言特性。...uWebSocket 是一款开源的 WebSocket 库,最新版使用了大量 C++17 的语法,美中不足的是这个库代码存在不少 bug,我在项目中使用了它,但修改了其大量的 bug,有兴趣的朋友也可以下载下来看一下

    3.9K10
    领券