• 5791阅读
  • 7回复

qt 使用dll(.so)的问题 [复制链接]

上一主题 下一主题
离线wswhp
 
只看楼主 正序阅读 楼主  发表于: 2008-10-27
— 本帖被 XChinux 执行加亮操作(2008-11-02) —
1.我有个qt工程要引用一个dll(.so)文件
用qmaike -project生成pro文件
然后我修改.pro文件,引入.so文件
我的so文件是在/home/wswhp/lib/libown


如下

TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .

# Input
HEADERS += alsa.h
SOURCES += alsa.cpp main.cpp
LIBS += -L/home/wswhp -lown

然后我在程序中导入 so源文件的头文件
#include <mylib.h>

然后我qmake make后
报错 mylib.h: No such file or directory
alsa.cpp:187: error: ‘hallo’ was not declared in this scope

我不知道错在哪里

源代码的头文件如下


#ifndef MYLIB_H
#define MYLIB_H

extern void hallo(char *vorname, char *name);

#endif


问大家应该如何解决 谢谢
离线fanzhichao

只看该作者 7楼 发表于: 2008-10-29
一句话说不清楚,看看就知道了:
http://bbs.chinaunix.net/viewthread.php?tid=239544
离线wswhp
只看该作者 6楼 发表于: 2008-10-28
4楼的 我的so得确是c程序,也没写 extern c之类的

应该怎么写阿 谢谢
离线浪漫天使
只看该作者 5楼 发表于: 2008-10-28
引用第4楼fanzhichao于2008-10-28 09:10发表的  :
我怀疑libown.so是用c编写的,包含头文件要加extern "c"

显而易见
好像那个leenux.cublog.cn里面专门有个dll和dll调用的例子。
离线fanzhichao

只看该作者 4楼 发表于: 2008-10-28
我怀疑libown.so是用c编写的,包含头文件要加extern "c"
离线mumutouv

只看该作者 3楼 发表于: 2008-10-28
这样不行啊,你需要将so包里面的函数进行一个export操作,然后在你的调用程序里面进行一个import操作,直接extern是在同一个项目里面的话可以这样做。
离线wswhp
只看该作者 2楼 发表于: 2008-10-28
我按照楼上的做法  还是错了

alsa.cpp:(.text+0xe84): undefined reference to `hallo(char*, char*)'
collect2: ld returned 1 exit status

新的错误 怎么办
离线浪漫天使
只看该作者 1楼 发表于: 2008-10-27
INCLUDEPATH += dir
dir是mylib.h所在的路径,
还有 程序里面最好写成
#include "mylib.h"
快速回复
限100 字节
 
上一个 下一个