如何将多个库集合到同一个动态链接库中

同样是在TUM的Van-pooling项目中,项目中有多个.cpp文件,因为需要将他们统一到同一个.dll文件中以便在python中导入并调用其中的函数。另外,其实各个.cpp文件之间是相互关联的,所以说将它们分别单独导入也是无益的,因为那样没办法实现它们的功能。

1. 文件列表:

  • common.h: 供common.cppsimulation.cppmain.cpp使用的头文件;
  • common.cpp: 里面定义了构建路网的函数road_load()
  • simulation.h: 供simulation.cppmain.cpp使用的头文件;
  • simulation.cpp: 里面有实现scheduler功能的函数handle_event()
  • main.cpp: 主函数

2. 失败的初次尝试

刚开始是尝试着利用common.cppsimulation.cpp这两个文件分别生成两个静态链接库.lib文件,然后再在main.cpp中调用这两个文件,最后利用main.cpp转化出一个动态库.dll文件。结果就是一直失败,错误信息:

undefined reference to road_load()

大概是这样。原因去找过,但是毕竟不是科班,也没必要去了解太多,大概就是因为动态库连接不上那两个静态库。多次尝试解决无果之后,便作罢,因为那一天就已经结束了。而且当天下午开了个skype会议,然后我看出来带我的那个博士Moeid已经处于有点焦虑的状态了。倒不是我的问题,其实他之前给我的任务我都完成了。这个项目是个既“跨国”又跨平台的项目,“跨国”只是说是两个不同学校之间合作的项目,而跨平台则是因为合作院校那边的负责人用C++开发Scheduler,而TUM则利用SUMO的TraCI在Python上搭建Demand Enhancement Model。不好说太多细节,反正就是麻烦得很。焦虑的源头是因为他们已经在PythonC++的交互问题上浪费了三个月的时间,而导致Moeid这边的研究没办法继续,因为他的后续研究依赖Scheduler返回的结果。所以Moeid向我表示了忧虑,他说他没办法向Prof. Constantinos交代这一个月的工作,“我总不能告诉他我这个月又什么都没做吧?”。所以在周三的时候(22/5/2019),我给他打包票说,放心,我周五给你个答复。

3. 其实很简单

果然,这种事情如果交给学C++的人来做的话根本就不会是一个问题,但是交给像我这样的外行人来说,真的就是很费时间,或者说完全是在浪费时间。果然,还是应该像阿坤说的那样,应该好好去推公式的好。但是呢,我有转念一想了,如果我把这一条C++Python(SUMO)这条路打通了,那我以后可能就是在用SUMO的人里面唯一能够利用C++来加快自己算法的人,所以...或许,只是或许并不是件坏事。这样一安慰自己也就好了。转回正题,解决方案如下:(直接把交给Moeid的简单的工作报告的一部分给复制上来了,懒得再写了)
The steps are listed below, and the first three commands have the same function, that is creating a .o file depends on a '.cpp' file. And the last command is generating a .dll file by linking the three .o file generated in the last three steps.
- g++ -o common.o -c common.cpp
- g++ -o simulation.o -c simulation.cpp
- g++ -o main.o -c main.cpp
- g++ -shared -fPIC -o sche.dll common.o simulation.o main.o

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容