Ошибка линкера LNK2019 отследила до __stdcall Я думаю, что получил правильную либерацию - что я могу сделать, чтобы решить это?

StackOverflow https://stackoverflow.com/questions/4459369

Вопрос

Я пытаюсь перенести 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, спрашивающую, в чем разница.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top