我正在使用 Visual Studio 2005 在 Windows XP 上工作。我的项目是在 Linux 上创建 LDAP 抽象 API 后创建的 Cmake 项目。我正在尝试以某种方式使其在 Windows 上运行。
我遇到了 LNK2019 类型的异常链接错误
main.obj : 错误 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]);
发生链接错误,并且当我将其留在那里时,程序编译并可以执行,但存在段错误(这是另一个故事)。
我不明白为什么链接器会这样。