Я работаю на Windows XP с Visual Studio 2005.
Мой проект - это проект Cmake, созданный после создания API абстракции LDAP в Linux. Я пытаюсь как-то заставить его работать на Windows.
У меня необычная ошибка связывания типа LNK2019
код:
main.obj : error LNK2019: symbole externe non résolu _strcpy référencé
dans la fonction _menu
случается, что эта функция находится в моем main.c, и ошибка связывания выше приходит из моего другого файла LDAP.C, который содержит функцию load_values_from_attr ()
код:
/****/
static INT16 load_values_from_attr(t_LdapSearchContext ctx,
UINT32 result_max_count, LDAP *ld, LDAPMessage *result_message,
BerElement *ptr)
{
UINT16 j=0;
UINT16 i=0;
char *str_attr;
struct berval **str_values;
str_attr=ldap_first_attribute(ld, result_message, &ptr);
if (str_attr == NULL) return 1;
str_values=ldap_get_values_len(ld, result_message, str_attr);
strcpy(ctx.attributs[i].attrs, str_attr);
while(str_values[j]!=NULL && j+1<RESULT_WIDTH)
{
strncpy(ctx.attributs[i].values[j+1].val,
str_values[j]->bv_val,MAX_LENGTH);
#ifdef WIN32
ber_bvfree(str_values[j]); // <<< here is my problem
#endif
j++;
}
/****/
Когда я удаляю или комментирую строку с: ber_bvfree(str_values[j]);
Ошибка связывания происходит, и когда я оставляю ее там, программа компилируется и может быть выполнена, но при этом возникает ошибка (это другая история).
Я не могу понять, почему компоновщик ведет себя так, если любой боби может дать мне какое-то объяснение, я буду поляной.
не стесняйтесь спрашивать меня больше объяснений.