对 stricmp 的未定义引用
我正在尝试创建一种方法来查找并替换字符串中的字符串,但我似乎在编译时遇到了一些错误。我可以得到一些帮助来弄清楚发生了什么事吗?
void replaceString(char *find, char *replace)
{
int len_string,i;
char temp[30];
len_string=strlen(find);
while(1)
{
for(i=0;i<len_string;i++) temp[i]=fgetc(edit);
temp[i+1]=NULL;
/* the stricmp() is used for comparing both string. */
if(stricmp(find,temp)==0)
{
fprintf(edit,"%s ",replace);
fclose(edit);
exit(1);
}
fseek(edit,-(len_string-1),1);
}
}
我在编译时得到的错误是对 stricmp 的未定义引用。 我知道这不是正确的编码约定,但 edit (FILE 类型的对象)当前是一个全局变量。
I am trying to create a method that finds and replaces a string within a string but I seem to have some error at compile time with it. Could I get some help into figuring out what is going on?
void replaceString(char *find, char *replace)
{
int len_string,i;
char temp[30];
len_string=strlen(find);
while(1)
{
for(i=0;i<len_string;i++) temp[i]=fgetc(edit);
temp[i+1]=NULL;
/* the stricmp() is used for comparing both string. */
if(stricmp(find,temp)==0)
{
fprintf(edit,"%s ",replace);
fclose(edit);
exit(1);
}
fseek(edit,-(len_string-1),1);
}
}
the error I get at compile time is undefined reference to stricmp.
I know it isn't proper coding convention, but edit (object of type FILE) is currently a global variable.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
stricmp
是 Windows 特定的。如果您使用的不是 Windows,请使用strcasecmp
。stricmp
is Windows-specific. If you're not on Windows,strcasecmp
.实际上,错误是在链接时而不是在编译时。您的代码被编译为一个目标文件,期望找到 stricmp 的实现,同时链接到它无法找到的其他目标文件。因此出现错误:“未定义对 stricmp 的引用”。正如 bmargulies 指出的那样,该实现仅在 Windows 库中可用。如果您使用的是 POSIX 兼容系统,则可以切换到 strcasecmp()。
Actually, the error is at link time and NOT at compile time. Your code got compiled to an object file expecting to find implementation of stricmp while linking with other object files which it couldn't find. Hence the error: "undefined reference to stricmp". As bmargulies pointed out, the implementation is available in only on Windows libraries. You can switch to strcasecmp() if you are on POSIX compliant systems.