织梦CMS - 轻松建站从此开始!

罗索

Linux 下程序调用so动态链接库中的线程的问题

罗索客 发布于 2007-06-08 11:07 点击:次 
在做一个应用开发的时候突然发现一个问题,请Linux/Unix的大哥们讲解一下问题原因以及如何避免,谢谢!状况如下:a.cpp 文件void init(){pthread_create(}void threadwork(void *p){printf(\"this is a thread\");}用g++ -fpic -shared -lc -o liba.so ./src/a.cpp -pth
TAG:

在做一个应用开发的时候突然发现一个问题,请Linux/Unix的大哥们讲解一下问题原因以及如何避免,谢谢! 状况如下: a.cpp 文件 void init() { pthread_create(&pid, NULL, threadwork, NULL); } void threadwork(void *p) { printf("this is a thread"); } 用g++ -fpic -shared -lc -o liba.so ./src/a.cpp -pthread 编译成动态链接库文件 b.cpp 文件 typedef void (*_initA)(); void threadwork(void *p){ printf("this is b thread"); } int main(...) { void *pdlCoccHandle = dlopen("liba.so", RTLD_NOW); _initA _init = (_initA)dlsym(pdlCoccHandle, "init"); _init(); } 用g++ -fpic -o b ./src/b.cpp -pthread 编译成可执行文件 按照我的想法执行结果应该是输出 但是结果却是 this is b thread 请问这是怎么回事?????我想这应该是函数名字引起的问题,但是虽然两个函数名称相同但是他们所要执行的功能是不一样的(我想在内存中定一的地址也是不一样的)。请问g++对待这种情况是如何编译的?如何能够避免这种情况的发生? --------------------------------------------------------------- 我想可能就是这个原因吧,你打开-Wall 选项看看有没有warning什么的. [align=right][color=#000066][此贴子已经被作者于2007-6-8 12:57:54编辑过][/color][/align] (iwgh)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200706/6711.html]
本文出处: 作者:iwgh
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容