Im partially posting this to vent my frustrations and partially to get everybody else's Experiance. From CVI 5.5 - 6.0 I never really had any big problems. Everything was stable and worked well and almost all problems where bugs in my code. Now all of sudden after moving to 7.0 it is just one problem after another corrupted msm's, callbacks being replaced with other pointers, ActiveX control problems, the UIR editior does not always save changes that you make to a control, I have run into more problems with 7.0 that I can remember coding around. There is no way 7.0 is 100% backwards compatable, I have a bunch of code that worked just perfectly fine on 6.0 for at least 2 years now that crashes on the 7.0 RTE.
I now find my self debuging the what the compiler is doing along with what my application is doing. I dont get paid to make little test apps to prove that the Compiler or one of NI's functions is not working properly, this is a waste of my time and my Company's money. I think that its great that they added tables and trees to Labwindows this go around but it introduces the need for the Labview RTE with the little piece of duct tape called cvi_lvrt.dll and this may come as news to NI but although our Company pays for LabView we dont like it, we dont install it, and have never had the need for the RTE until now. Besides that they are pretty much useless with out splitter bars because I could just create a dialog in VS with trees and tables and use that as I have done in the past.
Im begining to wonder is it just me that is having one problem after another with 7.0 or is everybody else having these problems also? If I am being unfair please let me know.
I agree with your first paragraph. I believe that CVI 6.0 is the best version out there. I still use CVI 6.0. I think NI needs to concentrate on adding more functionality/Library/Functions than changing look of CVI. I have trouble opening uir file in 6.0 after editing in 7.0. (I am not using any of the 7.0 controls). I am guessing more than 90% of the CVI users do not need 7.0/7.1 if they have 6.0.
Also, If I install only 7.0 Runt-time my application don't work. Gives mesa.dll error. So I have to install 6.0 RTE.
There was never 6.1 but there is 7.1 and now 7.1.1 which tells that 6.0 was more stable. Sheetal
I'm sorry to hear you've been having alot of trouble moving from 6.0 to the newer version of CVI. I just wanted to clarify a couple of things
1- CVI 7.1 is NOT a patched version of CVI 7.0. There was a year's delay between 7.0 and 7.1 and there were improvements made in 7.1, which is why its a minor version higher. The minor version update occured because of the fact that it was released only a year after CVI 7.0, which was the last major upgrade. The 7.1.1 patch was released because we felt that there were certain issues that needed to be corrected and made available to everyone. It does not look like you have been affected by any of those issues. Not everyone requires the 7.1.1 patch. We increment the major version of CVI if there has been 2 years or more since the last CVI major release. So the last major release of CVI was 7.0. So we certainly dont increment minor versions to indicate a patched version. If its a patch, it clearly states that.
2- The Table control was added in CVI 5.5. The Tree control is new to 7.0. These are native CVI controls and do NOT have a dependency on the LabVIEW Runtime. The dll you mention, cvi_lvrt.dll, is a version of the CVI runtime that you would link against if you are creating a CVI DLL for use with LabVIEW Real time. Your application gets linked with this dll if you specify LabVIEW Realtime only as runtime support in the target settings. For desktop applications, the target setting defaults to Full Runtime Engine.
Here is the help reference for this dll:
If you select LabVIEW Real-Time Only, your project does not link to the entire set of LabWindows/CVI libraries but instead links to a smaller set of functions. DLLs for LabVIEW Real-Time Only use cvi_lvrt.dll instead of cvirte.dll or instrsup.dll.
Now we do install the LabVIEW runtime on CVI development machines, but this because of the example finder. You do NOT need to distribute the LabVIEW runtime with your CVI applications. The only application that needs this is the CVI Example finder that is installed with the CVI IDE. All the table and tree controls need is the CVI RTE. If this was communicated incorrectly to you somehow, I apologize for that.
3- None of the issues you mentioned had to do with a buggy compiler. It might occur because there might have been behavioral changes in the runtime engine. I understand you are having issues with your ActiveX control and hopefully we can help you resolve that issue soon. We do test out our ActiveX container with most commonly used out there, but it is impossible for us to be able to check it with every single activex control that exists.
4- We never claimed to support opening UIRs created in newer versions of CVI with older CVI IDEs. For example, you could create a panel is CVI 7.0 and add a tree control. CVI 6.0 will not be able to understand that control correctly because this control did not exist in that version. You should be able to open a CVI 6.0 panel in 7.x without problem. Loading a panel is different that opening a UIR for editing purposes. You should be able to run a CVI 6.0 exe using the 7.1 RTE. Im not sure why you are seeing kind of behavior with that particular activex controls, but please continue to work with us so we can resolve this.
5- The issue with mesa was found recently where we were not including the mesa.dll as part of the downloadable CVI runtime engine. This dll gets distributed as part of the distribution kit if you were to create a kit using the "Create Distribution Kit" option. The newest CVI RTE download should have this dll included now. You can download the new updated CVI RTE for 7.1 from here. And ofcourse, you don't need this if you are already distributing the RTE using the CDK option.
I hope this clarifies things. If you do find issues that make upgrading challenging, please work with us so we can get you up and running.
Hi Thanks for your notes. Regarding item#4 here is my situation. I have created a uir in 6.0 and I accidently opened that file and edited in 7.0 (or 7.1) and than my coworker wanted to work on it on 6.0 and he could not open that file. uir file does not have any control which is not supported by 6.0 I have attached uir and h file for your reference. Any comment is useful Sheetal
Bilal: Thanks for your notes. I am still struggling with the activeX control and the 7.x RTE compatibility issue but am sure we will be able to come up with the solution soon. As you said, lets keep working together.
Sheetal: As Bilal has mentioned, 7.x UIRs are not supported by 6.0. If you open up a 6.0 UIR in 7.x, it automatically upgrades itself to the higher version of CVI. The solution to your problem at hand: - Open up the UIR in 7.x. - Save the UIR in 'text format' using the "Options" button on the toolbar. - Open up the 6.0 environment. - From the "options" button, load up the text formatted UIR file. - If it gives you errors, it is because of the newer features that it has acquired from 7.x. - To get rid of these features, open up the text file and edit it accordingly. - You shold be able to load up the text formatted UIR in 6.0.
We realize that the scenario you described is perfectly normal, and that it is quite cumbersome to not be able to share .UIR files between co-workers who happen to be using different versions of CVI. We are hoping to address this issue in a general way in a future release of CVI.
In the meanwhile, I can provide a little background on this issue that also might help you with the specific UIR file that you attached here.
As others have pointed out before, every new version of CVI includes some new control types that obviously cannot be loaded in an older version of CVI. This is considered normal, and for most upgrade/downgrade scenarios, we simply expect that CVI users exercise common sense and not attempt to port UIRs containing these controls. As you yourself have pointed out, you were careful to not do this, and this is not the reason you are having a problem loading this .UIR in 6.0. Beyond the issue with new control types, there are also times in which we are forced to make changes to some binary representation within the .UIR that cause older versions of CVI to not be able to read them. When this happens, we bump an internal version setting in the .UIR file, which will result in a warning being triggered whenever someone attempts to load a newer .UIR in an older version of CVI (or equivalently, call LoadPanel with an older version of the CVI runtime). This is probably the warning you've been seeing: "A .uir file that was created with a more recent version of CVI has been specified [...]". It is rare that we have to bump this internal version, but we did have to do so between 6.0 and 7.0, because of a necessary change to the compression algorithm we use to save bitmaps embedded in controls. We did not bump this version between 7.0 and 7.1, nor between 5.5 and 6.0, nor are we planning on doing it between 7.1 and the next version. So what happens when you receive this warning? The answer is that it depends on the contents of the .UIR file. In some cases you might be able to click "Continue" and the .UIR will still load. In others, it won't let you, and it might even cause a crash (this is why we display the warning). In the particular case of the 6.0/7.0 transition, if the .UIR saved in 7.x contains any images (in a picture control, picture button, or a canvas control, for example) then the .UIR file will not load.
I tested the .UIR file that you attached here, and if I remove the picture control that you have in the Data Analysis panel, then I can click "Continue" and the .UIR will still load. I realize that this is not a general solution, but hopefully it might make your life easier until we can address this issue in a future release, in a more robust way.