Visual Studio2005を使用してWindowsXPで作業しています。私のプロジェクトは、LinuxでLDAP抽象化APIを作成した後に作成されたCmakeプロジェクトです。私はどういうわけかそれをWindowsで動作させるようにしています。
タイプLNK2019の異常なリンクエラーが発生しました
main.obj:エラーLNK2019:symboleexternenonrésolu_strcpyréférencédanslafonction_menu
この関数が私のmain.cにあり、上記のリンクエラーがload_values_from_attr()関数を含む他のファイルLDAP.Cから発生していることが起こります。
/****/
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]);
、リンクエラーが発生し、そのままにしておくと、プログラムがコンパイルされて実行できますが、セグメンテーション違反が発生します(これは別の話です)。
リンカがこのように動作している理由がわかりません。