Home
Support
当解析头文件(.h)时,为什么LabVIEW Import Shared Library(.dll)冻结了?
当解析头文件(.h)时,为什么LabVIEW Import Shared Library(.dll)冻结了?
主要软件:
主要软件版本: 1.0
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Professional Development System
问题: 我想在LabVIEW中使用一个.dll 文件及其相关的.h文件创建一个自定义库,当使用Import Shared Library Wizard ,在LabVIEW的工具菜单栏下,当解析头文件的时候,整个LabVIEW程序冻结。(对话框提示可能需要等待几分钟),该向导没有任何反应,直到再次点击了窗口,LabVIEW给出NOT RESPONDING 的信息。通过或者终止冻结现象的唯一方法是关闭整个LabVIEW程序。我可以使用调用库节点函数访问该.dll 中的所有函数,所以我确定该.dll 正常。同时我在IDE中将该头文件正确打开,看出格式是正确的。
解答: .dll文件中使用了ASCII字符是为什么 Import Shared Library wizard 解析头文件时中止的主要原因。这个问题的一个原因是使用的字符超出了标准7-bit ASCII范围。这些字符是ASCII代码之外的范围,包括字符:128-255 。解析工具不能识别扩展ASCII码,因此导致了.h 文件损坏。
为了检验.h文件是否包含不识别的字符,在十六进制编辑器中打开该文件。十六进制编辑器是一个程序,可以将任何文件转换成十六进制代码。另外它会将十六进制对表示成ASCII码。这样就会把标准文本编辑器不识别的字符显示出来。网上有许多免费的十六进制编辑器。有两种可选方法可以去除不识别的字符。
方法 #1: 复制 & 粘贴
- 在IDE中打开现存的.h 文件,同时创建一个新的.h 文件。
- 将原始.h 文件中你需要的文本拷贝并粘贴到新的.h 文件中。
- 保存新的 .h 文件。
- 在Import Shared Library Wizard 中使用新的头文件。
方法 #2: 编辑十六进制文件
- Open the original .h file in a hex editor
- 在十六进制编辑器中打开原始.h 文件。
- 找到任何超出ASCII 表(128-255)或者(80h-FFh)的十六进制对,使用可识别的同时编辑器忽略的字符例如空格键20h,来代替。
- 保存文件
- 在Import Shared Library Wizard 中使用新编辑的文件作为头文件。
相关链接: AE KB 4EE33MG5: Shared Library Import Wizard Hangs When Importing a DLL (Chinese)ASCII Code - The extended ASCII table
附件:
报告日期: 10/24/2011
最近更新: 01/28/2012
文档编号: 5QNBDDX0
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.