MFC调用LabVIEW创建的DLL出现错误代码 (0xc0000142)。



主要软件:
主要软件版本: 5.0
主要软件修正版本:
次要软件: Measurement Studio>>Measurement Studio for Visual C++

问题:

我在LabVIEW中创建了一个DLL,然后尝试在MFC C++应用程序中静态的调用。我得到如下错误提示“应用程序初始化失败(0xc0000142)”,点击OK来结束应用程序。我能够在LabVIEW以及一个Win32应用程序中成功调用这个LabVIEW Dll,我如何能够解决这个问题?



解答:

这个错误发生在MFC应用程序中,是因为MFC应用程序试着在将重要的系统库文件如User32.dll导入内存之前首先将调用LabVIEW Dll文件。然而LabVIEW DLL将调用这些重要的系统库文件。如果它们不在内存中,LabVIEW DLL文件就会在加载的时候报错。在Win32控制台程序中,系统库文件在LabVIEW DLL之前调入内存,因此避免了错误。

为了解决这个问题,你必须要么动态调用LabVIEW DLL或者你需要设置延时加载选项来延迟DLL的加载。为了在Visual Studios中设置该选项,打开项目属性并且选择进入属性配置 »链接器»输入然后在延时加载DLL项中输入LabVIEW DLL的名称。如下图所示,其中的Sum.dll就是你的LabVIEW .


为了动态的调用你的LabVIEW DLL,参考如下MSDN链接的一个动态调用DLL的例子。你需要从上图中的设置中移除Sum.dll.



相关链接: MSDN: Using Run-Time Dynamic Linking
Using the text above as a reference, please enter your edited text below:


附件:





报告日期: 09/02/2008
最近更新: 09/17/2008
文档编号: 4P1D2AQX