Ошибка линкера LNK2019 отследила до __stdcall Я думаю, что получил правильную либерацию - что я могу сделать, чтобы решить это?
Вопрос
Я пытаюсь перенести LabCVI Projekt в MSVS 2010 C ++ Express. Есть строка кода, когда читает так:
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 - Wich добавлен в пути библиотеки (CVI2009 Extlib MSVC) Ошибка линкера все еще возникает, и я просто не понимаю, почему.
Следует ли добавлять LIB по -другому? Как я могу проверить, что это действительно правильный либера Значит ли ошибка что -то совершенно другое?
Решение
Вам нужно рассказать линкеру, в какие библиотеки ссылаются. Путь поиска расскажет только линкеру, где найти эти библиотеки.
т.е.:
Linker Libraries:
- a.lib
- b.lib
Linker Search Dirs:
C:\project_a\lib
C:\project_b\lib
Линкер будет искать обе папки для A.Lib и B.Lib, но не будет связывать какие -либо библиотеки, о которых ему не сказано.
Другие советы
Я как -то только что решил это - я добавил в проект cvirt.lib и cvisupp.lib direktly. Ошибка ушла ...
Однако я все еще не удовлетворен, потому что я уже дал проекту путь, по которому он должен искать библиотеки. Я добавлю еще один вопрос в Stackoverflow, спрашивающую, в чем разница.