改成离线语音听写
在 LabVIEW 中使用指针
目的:传入一个初始化的C字符串,在DLL中运行之后,此字符串被重写,得到有效信息,语音识别的文字。需不需要使用XNODE?LXY答:需要
1、DLL函数声明 int LVmain(char** OutInfo)
2、函数调用约定需要一致-__cdecl (/Gd)
3、使用传指针参数进labview 是不行的,无法实现类似于C语言的传地址功能,在C语言中,传字符串相当于传指针,指针所起的位置的内存数据可以被函数所操作。从而实现C语言函数“返回”除返回值之外的多个参数。但是这个操作在labview中是行不通的。
4、解决办法是传入一个数值指针int*,这个指针即将需要存储的是指向字符串的指针,char** 。在DLL函数中实际上是产生了一个指向字符串的地址(指针的指针),labview调用库函数节点将此传出,再使用一个XNODE(此节点由国外团队二次开发),解引用指针(解引用这个指针的指针),指定参数类型(字符串),得到结果。
修改DLL函数声明
修改DLL函数声明需至少在两个文件中修改:1)CreateDll.cpp 2)CreateDll.h
项目设置
1)打开Microsoft Visual Studio 2010,选择文件->新建->新建项目。
图一
2)选择Visual C++ ->Win32->Win32控制台应用程序,输入项目名称,然后点击确定键。
图二
3)点击下一步。
图三
4)附加选项选择“空项目”,应用程序类型选择“控制台应用程序”,然后点击完成。
图四
图五
5)鼠标右键点击“源文件”,点击添加->新建项。
图六
6)选择“代码”,输入后缀名为.c的名称,例如“main.c”,点击添加。
图七
7)代码请参考SDK/Windows_SDK/samples下的语音示例。
图八
8)将科大讯飞语音SDK中bin,include,libs文件复制到Demo文件夹下。
图九
3 导入头文件
1)鼠标右键点击Demo项目,选择属性。
图十
2)点击C/C++->常规->附加包含目录,输入相对于工程文件Demo.vcxproj的相对路径,即相对于$(ProjectDir)的路径。
图十一
图十二
4 加载msc.dll
1)加载msc.lib文件:在main.c文件中输入如下图所示代码。(注意:加载路径输入相对于工程文件的相对路径)
图十三
2)将msc.dll所在目录设置为工作目录,即“$(ProjectDir)..in”。
图十四
5 打印日志
运行程序后,bin/msc文件夹下会生成日志。(注意:msc文件夹下需有msc.cfg文件)
图十五
6 运行可执行文件
1)通过属性设置,将可执行文件copy到bin目录下运行,否则会报如图16错误。
图十六
图十七
2)点击“命令行”后边的下拉框,选择“编辑”。
图十八
3)输入“copy $(TargetPath) $(ProjectDir)..in”。
图十九
Inserted from <http://www.xfyun.cn/default/doccenter/doccenterInner?itemTitle=d2luZG93cw==>
23108的真正原因-离线听写服务还没发布