Mac系统制作C++动态链接库

Mac系统制作C++动态链接库


最近在学习使用C++语言学习一些关于多线程的知识,需要将一些多线程使用的函数单独用一个动态库进行封装起来调用,查了一些网上的资料,各种各样的办法,尝试了几种方式,总是会遇到一些报错。后面根据自己的理解,偶然成功了,再次进行记录一下当时的一些操作过程。

以下是我需要使用的一些文件:myFunc.h,myFunc.cpp,Thread_Ex4.cpp

// myFunc.h 申明了一些函数,以及申明定义量测使用的模板函数
#ifndef __MYFUNC_H_
#define __MYFUNC_H_ 

#include <iostream>
#include <thread>

using namespace std::chrono;
using namespace std;

template<typename T>
void measure(T&& func)
{
    auto beg_t = system_clock::now();
    func();
    auto end_t = system_clock::now();
    duration<double> diff = end_t - beg_t;
    cout<<"performTest total time:"<<diff.count()<<endl;
}

// user-defined function
void func();

#endif // !__MYFUNC_H_
// myFunc.cpp:自定义函数的定义
#include "myFunc.h"

void func()
{
    cout<<"This is func thread "<<endl;

    int s = 0;
    for(int i =0;i < 5;i++)
        s+= i;
}

// main 入口
// Thread_Ex4.cpp
#include "myFunc.h"
#include <iostream>

int main(void)
{
    measure(func);
}

在这里,首先对myFunc.cpp进行编译g++ -g -shared myFunc.cpp -o libmyFunc.dylib -std=c++11
这里特别需要注意的是Mac系统下动态库的命名:lib[libname].dylib
接下来就可以调用这个动态库:g++ -g Thread_Ex4.cpp -o Thread_Ex4 -I . -L . -l myFunc -std=c++11

说明

 1. -l(小写L)后接xxxx 表示调用libxxxx.dylib 库 
 2. 如果库不在系统默认的目录下要使用-L后接路径 再接-lxxxxx
 3.  -I(大写i)后接路径,表示在此路径下寻找头文件 xxxx.h

完结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值