2010-12-16 9 views
0

Я пытаюсь передать программу LabCVI Projekt на MSVS 2010 C++ Express. Там находится строка кода Wich звучит так: происходитОшибка компоновщика LNK2019 прорисована обратно на __stdcall. Я думаю, что у меня есть правильная библиотека - что я могу сделать, чтобы решить эту проблему?

if (InitCVIRTE == 0) return 0; 

линкер, ошибка: LNK2019 «_InitCVIRTEEx @ 12» - все соответствующие заголовок уже имеются заявления CPP:

#ifdef __cplusplus 
extern "C" { 
#endif 
... 
#ifdef __cplusplus 
} 
#endif 

Я отследил ошибку вернуться к этим фрагментам, что я для вас в сочетание:

#define CVIFUNC __stdcall 
int CVIFUNC InitCVIRTEEx (void *hInstance, char *argv[], void *reserved); 
#define InitCVIRTE InitCVIRTEEx 

Суммируя все это:

int __stdcall InitCVIRTEEx (void *hInstance, char *argv[], void *reserved); 

Этот вызов должен быть определен в cvirt.lib, который добавляется в Библиотечные пути (CVI2009 \ extlib \ msvc) Ошибка Linker Error, и я просто не понимаю почему.

Следует ли добавить lib по-другому? Как я могу проверить, действительно ли это правка? Имеет ли ошибка что-то совершенно иное?

+0

Не могли бы вы найти определение `InitCVIRTEEx`? – 2010-12-16 09:58:14

ответ

2

Вам нужно сообщить компоновщику, к каким библиотекам нужно подключиться. Путь поиска скажет компоновщику, где можно найти эти библиотеки.

т.е:

Linker Libraries: 
- a.lib 
- b.lib 

Linker Search Dirs: 
C:\project_a\lib 
C:\project_b\lib 

компоновщик будет искать обе папки для a.lib и b.lib, но не будет связывать какие-либо библиотеки это hasnt было сказано о.

0

Я как-то только разрешил это - я добавил cvirt.lib и cvisupp.lib прямо к проекту. Ошибка исчезла сейчас ...

однако я все еще не удовлетворен, потому что я уже дал проекту путь, где он должен искать библиотеки. Я добавлю еще один вопрос в stackoverflow, спрашивающий, в чем разница.