初入Linux,请教关于共享库undefined symbol的问题
在upper.h中定义函数
void printUpperCase(char* msg);
在upper.c中实现函数,打印msg。
在demo.c中调用upper.so,采用了dlopen等库函数
如果在upper.c中包含<stdio.h><string.h>,采用C中的打印,编译时用gcc,则一切正常
如果在upper.c中包含<iostream><cstring>,打开std命名空间,采用C++中的cout等,则
在执行时,加载upper.so成功,但调用dlsym()函数请求printUpperCase时程序崩溃,错误原因为:
undefined symbol : printUpperCase
请问是什么原因,该如何解决。
谢谢 :)
问题点数:0、回复次数:2Top
1 楼slone(slone)回复于 2005-04-02 00:18:33 得分 0
名字空间可能有冲突吧,把 using namespace std 去掉,直接用std::cout 试试Top
2 楼Wolf0403(废人:独活十年~心如刀割)回复于 2005-04-02 02:21:51 得分 0
用 g++ 编译 C++ 程序。gcc 不会链接 C++ 标准库 libstdc++Top




