LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Link error with '_Ivi_SetAttributeViBoolean@20'

Hi,

I created a CVI project on a network drive, then compiled and linked successfully from my desktop. But when I worked from a laptop, I could only compile but not link. The link error I got is "Undefined symbol '_Ivi_SetAttributeViBoolean@20' referenced in agn6700_ISI.c" (
agn6700_ISI.c is my wrap-up of the driver for agn6700 power supply).

In my project, I need to use the
Agn6700 N6700 DC power supply driver. I installed the same driver onto the desktop and the laptop (both running on WinXP), and included agn6700.fp into my project. I also installed the same ICP2.0, IVI Shared Components, and Visa 3.3 onto the two PCs. But just don't know why I have link error only on the laptop.

BTW, why is it complaining about '_Ivi_SetAttributeViBoolean@20' instead of '_Ivi_SetAttributeViBoolean'.

Pls help. Thank you very much.
Jason Jiang
0 Kudos
Message 1 of 8
(4,380 Views)
This isn't a concrete answer, but in general search for .dll files and see if you are missing one in the installation that doesn't work.

 ivi.dll perhaps?

As I say I don't know specifically, other than a linker error means it can't find the object code that's already been compiled.

- John
0 Kudos
Message 2 of 8
(4,366 Views)
Jason,

The function Ivi_SetAttributeViBoolean is part of the IVI library, which for some reason hasn't been installed in your laptop. The library should be included with ICP, which you did install. You can confirm whether or not the library is installed by looking in CVI's Library menu, and checking to see if the "IVI" entry is dimmed.
If the library didn't get installed, one possible reason is if you installed ICP before you had installed the CVI development environment. If that's what happened, simply run the installer again, and make that the "CVI support" feature in the feature tree is enabled. Also make sure that you're using CVI 6.0 or later.

The leading underscore and the @xx termination are a common linker notation for describing the function, to make sure that both the caller and callee are referencing the same exact function. It's called "name decoration". The @20 means that the argument list of the function takes up 20 bytes.

Luis

0 Kudos
Message 3 of 8
(4,346 Views)
Thank you for the reply.
I checked in CVI and found the IVI Library was dimmed as you said. So I
  1. reinstalled ICP 2.0 and restarted laptop. IVI Library still dimmed;
  2. uninstalled ICP 2.0 and IVI Shared Components, restarted the laptop, installed them back, restarted laptop again. -- still dimmed
I don't know what I can do now. Any more ideas? Thank you very much.
Jason

0 Kudos
Message 4 of 8
(4,340 Views)
If I uninstall everything and start from scratch, what the sequence should I follow if I need to install the components below:
  • CVI 7.1
  • ICP 2.0
  • IVI Shared Components
  • VISA 3.3
  • NI488223.exe (GPIB driver)
Some instrument drivers can be installed later I think:
  • ag5313xa: for frequency counter
  • ang330: for load system
  • ang6700: for DC power supply
  • tkds5000: for scope
Thanks.
Jason
0 Kudos
Message 5 of 8
(4,335 Views)
Ok, I finally managed to solve the problem, but not sure how exactly. What I did after calling NI:
  • uninstalled everything
  • deleted registry HKEY_LOCAL_MACHINE/SOFTWARE/NationalInstrument*
  • installed in sequence CVI7.1, NI488.2, VISA3.3, and ICP2.0.
1) I installed CVI and Instrument Support drivers from CDs, instead of from a network drive (I used to have a problem installing from network drive)*
2) I used another serial number to register CVI*
3) after I installed CVI and Instrument Support drivers, it had NI488.2 and VISA3.3. So I went ahead to install ICP2.0

*Don't know which one or more of the 3 steps help.

Thanks.
Jason
0 Kudos
Message 6 of 8
(4,316 Views)
Thanks for the update, Jason. It's good to know that you finally got it working.

I can't explain why installing CVI 7.1 followed by ICP 2.0 didn't automatically install the IVI library. I suppose that there could have been some missing or incorrect registry value that was throwing off the ICP installer. Also, I'm assuming you restarted CVI after installing ICP.

I don't suppose you browsed through the feature tree of the ICP 2.0 installer, and saw the initial state of the "CVI support" feature, did you? It should have been 'on' by default after having installed CVI 7.1, and installing that feature should have installed the IVI library. So either it was off by default, or it was on but still failed to install the library, for some reason. Either way, it's probably too late to find out why, exactly, either of those scenarios happened.

In any case, since you finally got working, I guess it's a moot point. Sorry for the inconvenience.

Luis
0 Kudos
Message 7 of 8
(4,278 Views)
Yes, I restarted CVI (by rebooting computer) after installing ICP.
 
I did browsed through the feature tree of ICP installer, and saw CVI Support was enabled. But its color was darker when later the installation turned out to be unsuccessful. The last round, after I uninstalled everything, deleted the registry, and installed CVI from CD using a different serial number, I noticed the color of CVI Support feature in the ICP installer was lighter, for sure.
 
Thanks,
Jason
0 Kudos
Message 8 of 8
(4,269 Views)