From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

after migrating to CVI 2013 could not get an exe file

We are still investigating the root cause of this issue, but I wanted to update you on a workaround. The problem is that niimaqdx.lib is located in the wrong directory.

 

Copy the library from:

 

C:\Program Files (x86)\National Instruments\Shared\CVI\Bin

 

To:

 

C:\Program Files (x86)\National Instruments\Shared\CVI\Bin\msvc

 

In fact, you should move all of the vision .lib files to the msvc directory. It would probably be best to copy them there instead of moving them in case anything is depending on the libraries being at that location.

National Instruments
0 Kudos
Message 11 of 21
(2,741 Views)

hi, one comment on this. We seem to have gone down this path too - updating vision software to 2013 disabled creating a debug dll with code referencing niimaqdx.lig, and then updating cvi to 2013 disabled creating a release dll as well.

 

Copying niimaqdx.lib from the shared\cvi\s\bin directory to shared\cvi\bin\msvc didn't resolve the missing symbol. But copying from ni-imaqdx\lib\msvc did.

 

The library in the latter directory was much smaller, 38k instead of 187k. (This is for imaqdx v4.2, latest I could find). Is there a chance that the library put in the shared directory was compiled to reference the debug version of cvi base library instead of the release ? The three missing symbols UPLibBreakpointWithElab, etc. all look like runtime memory access debug functions.

 

Message 12 of 21
(2,720 Views)

I have had the exact same problem. Updating from CVI 2012 to 2013 broke BOTH when using imaq & vision.

 

In order to make this thread findable by the search engine, the errors are:

 

error: Undefined symbol '__UPLibBreakpointWithElab@16' referenced in "c:\Program Files (x86)\National Instruments\Shared\CVI\Bin\niimaqdx.lib".  
error: Undefined symbol '__UPLibChkSize@24' referenced in "c:\Program Files (x86)\National Instruments\Shared\CVI\Bin\niimaqdx.lib".  
error: Undefined symbol '__UPLibClearArgs@0' referenced in "c:\Program Files (x86)\National Instruments\Shared\CVI\Bin\niimaqdx.lib".

 

Message 13 of 21
(2,666 Views)

I ran into this issue as well, after updating to vision acquisition 2013.08 and CVI 2013. D_Biel's workaround didn't resolve my issue, but TheCoffeeBeing's did. 

 

However, I still get missing symbol errors during the linker stage. Curiously, it won't find the symbols for imaqCreateImage, imaqDispose, imaGetImageInfo or imaqSetWindowThreadPolicy, while any calls starting in IMAQdx apparently are fine.

 

I've tried manually adding the lib and fp files for imaq and imaqdx to the project, but to no avail. 

0 Kudos
Message 14 of 21
(2,613 Views)

atomcooler

 

I think your issue is the same as mine; I guess that your missing symbols are defined in nivision.h, not imaqdx

 

I have just tried this fix from the NI engineer answering my support call, it seems to work:

 

Edit nivision.h. Find the block that starts #if !defined(IMAQ_STDCALL). Modify it to read as follows:

 

#if !defined(IMAQ_STDCALL)
    #ifndef __GNUC__
        #define IMAQ_STDCALL __stdcall
    #else
        #define IMAQ_STDCALL __stdcall
    #endif
#endif

 

Please let me know if this works for you also.

Message 15 of 21
(2,596 Views)

Hi Steve,

 

that did indeed solve my problem.

 

Can't say I'm impressed with NI's QA process. I understand switching compilers on CVI is a big endeavour, but that you ship a product that won't compile code linking to one of your major libraries is interesting, to say the least.

0 Kudos
Message 16 of 21
(2,572 Views)

atomcooler.

 

I agree. I've raised this suggestion in the CVI Idea Exchange, just to rattle a few cages.

 

http://forums.ni.com/t5/LabWindows-CVI-Idea-Exchange/Test-New-CVI-Versions-with-ALL-the-add-on-toolk...

0 Kudos
Message 17 of 21
(2,566 Views)

Copying niimaqdx.lib from the shared\cvi\s\bin directory to shared\cvi\bin\msvc didn't resolve the missing symbol. But copying from ni-imaqdx\lib\msvc did.

 

that worked for me 🙂 

0 Kudos
Message 18 of 21
(2,314 Views)

 

Hi

instead of changing the header file one can swap "default calling convention 32bit" to __stdcall in build options.

copying the niimaqdx.lib to msvc folder made imaqSetEventCallback(,) function to work for me!

 

0 Kudos
Message 19 of 21
(2,159 Views)
I've migrated our complete imaging code over to OpenCV as a result of this issue. Leaving things like this open for about a year doesn't justify $500 in per seat licensing fees in my book.
0 Kudos
Message 20 of 21
(2,131 Views)