vscode打包lib、dll以及引用动态库

1.打包dll:在当前目录下,在终端下执行下面两句:
    gcc -c hello.c -o hello.o -fpic
    gcc hello.o -o hello.dll -shared
   打包lib:在当前目录下,在终端下执行下面语句:
    gcc -c myMath.c -o myMath.o -static
    ar -crus libmymath1.lib myMath.o
2.main.c中引用动态库hello.dll
    main中内容如下:                                          
    #include <stdio.h>                                           
    #include"hello.h"                                              
    int main(){
       helloworld();                                              
       return 0;                                                        
     }                                                                      
3.编译,链接(如果库不多,只有一个,单文件就不写Makefile了,直接使用gcc命令即可。 库多的情况用makefile)
(1)对于lib:
    编辑完main后,终端执行如下命令(单目录):
      gcc -c main.c -o main.o
      gcc main.o -L. -lhello -o main.exe
    编辑完main后,终端执行如下命令(多目录,-I参数是用来指定头文件目录,表明include文件夹为目录):
      gcc -c src/main.c -o obj/main.o -I include
      gcc main.o -L./lib -llibmymath1 -o bin/main.exe
(2)对于dll:
       和lib同理

### 如何在 VSCode 中将 C++ 代码打包为 `.so` 动态链接库 要在 Visual Studio Code (VSCode) 中生成 `.so` 动态链接库,可以按照以下方法操作: #### 使用 `g++` 编译器手动编译 可以通过命令行使用 `g++` 来生成动态库文件。假设已经编写好源代码并将其编译为目标文件,则可通过如下方式创建共享对象文件: ```bash $ g++ -shared *.o -o libcalc.so ``` 此命令会将当前目录下的所有目标文件(`.o` 文件)组合成名为 `libcalc.so` 的动态库[^1]。 #### 利用 CMake 工具自动化构建过程 对于更复杂的项目结构或者希望实现跨平台支持时,推荐采用 **CMake** 构建系统来管理项目的依赖关系以及生成不同类型的输出文件(如静态库、动态库)。通过设置合适的参数,在 CMakeLists.txt 文件中指定要生成的是哪种类型的库即可完成配置工作。具体来说,在定义 add_library() 函数的时候传入 SHARED 参数就可以指示 cmake 创建一个 shared library 而不是默认情况下产生的可执行程序或者是 static libraries: ```cmake add_library(mylibrary SHARED src/main.cpp) ``` 当您运行 cmake 并随后 make 或者其他相应于所选 IDE/编辑器插件的 build 操作之后, 就会在 output directory 下找到新建立起来的 .so 文件了.[^2] #### Ubuntu 上基于 VSCode 和 GCC/G++ 设置开发环境 如果是在 Linux 发行版比如 Ubuntu 系统上首次尝试进行这样的任务的话, 可能还需要额外做一些准备工作先确保整个流程能够顺利运作下去. 这包括但不限于安装必要的软件包(例如build-essential), 安置好正确的路径变量等等. 另外值得注意的一点就是关于调试方面的事情——既然我们讨论到了如何制造出来这些所谓的 “dynamic linkable objects”, 自然也就不可避免地涉及到如何去测试它们的功能正常与否啦! 对于此部分而言, 如果打算直接从 command line 开始的话那么 ldconfig 应该是你的好朋友之一;而要是倾向于图形界面解决方案呢? 那么不妨考虑一下借助 GDB Debugger 插件配合 visual studio code 实现更加直观便捷的效果吧![^3]. 最后提醒一点有关 project setup 方面的小技巧: 当新建工程时记得把 Project Type 设定为 Shared Library 同时也要确认 Toolchain 是指向 linux gcc 的版本哦~这样有助于减少后期可能出现的各种麻烦事发生几率.[^4] ```python # 示例 Python 调用自定义 SO 库的方法 import ctypes my_so_lib = ctypes.CDLL('./path_to_your/libcalc.so') result = my_so_lib.some_function() print(result) ``` 以上展示了怎样加载由前面提到的过程生产的 so 库到 python script 中去调用其中暴露出来的函数接口的一个简单例子.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值