javaee论坛

普通会员

225648

帖子

344

回复

358

积分

楼主
发表于 2017-09-09 03:57:39 | 查看: 130 | 回复: 3
一 、 创建动态库项目

      打开Qt Creator,选择New File /Project -〉  Other Project -〉 C++ Library -〉 Shared Library,其他的就一直下一步就可以了

    这样工程文件就生成了,一个pro,一个cpp,两个h文件

二、 编写代码

     将class相关代码直接去掉,我们要的是C格式的代码。然后,将代码写在cpp那个里面,并将这些函数在。h文件声明,将需要被外部调用的函数在global.h那个文件里声明为extern。


三、 编译

    直接点运行,运行成功了直接到编译目录里找dll的文件。有dll文件表示动态库生成成功。

四、 使用dll

   在Qt项目里添加库不能自动添加dll的库,只能是lib后缀的,因此我们只能手动添加,将dll加到pro文件即可。如:

  LIBS +=-L$$PWD/lib/ -lmsc\

        $$PWD//lib/asr.dll
上面部分是lib后缀的库,下面是asr.dll是我们刚才生成的。放在lib文件夹里,$$PWD表示当前路径
这样,我们就可以完成了。
源码:
XXX_global.h:

#ifndef ASR_GLOBAL_H#define ASR_GLOBAL_H#include <QtCore/qglobal.h>#if defined(ASR_LIBRARY)#  define ASRSHARED_EXPORT Q_DECL_EXPORT#else#  define ASRSHARED_EXPORT Q_DECL_IMPORT#endiftypedef  int MSP_ERROR_CODE;extern void ASRInitConfig(const char *_login_config,const char *_session_param,const char *_grammar_file);extern MSP_ERROR_CODE  ASRGetResult(const char *wav_file,char out_text[],int max);#endif // ASR_GLOBAL_H
</pre><pre class="cpp" name="code">
XXX.h:
#ifndef ASR_H#define ASR_H#include "asr_global.h"//class ASRSHARED_EXPORT asr {//public://    asr();//};const char* get_grammar( const char* filename );void release_grammar(const char** grammar);int run_asr(char rec_result[],const char* asrfile ,  const char* param , const char* grammar);extern void ASRInitConfig(const char *_login_config,const char *_session_param,const char *_grammar_file);extern MSP_ERROR_CODE  ASRGetResult(const char *wav_file,char out_text[],int max);void getResult(char out_text[],int max,char rec_result[]);bool indexOfString(const char* sstr,char str[],int len);#endif // ASR_H

XXX.cpp部分只需要将XXX.h里的代码实现就ok 了



普通会员

0

帖子

277

回复

284

积分
沙发
发表于 2019-12-20 13:00:12

信春哥,得永生!

普通会员

0

帖子

312

回复

323

积分
板凳
发表于 2021-05-02 06:17:32

围观

普通会员

0

帖子

333

回复

340

积分
地板
发表于 2024-04-25 04:53:17

楼主听话,快到碗里来!

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017