iconv.h 和libiconv.dylib 总是提示无法使用,麻烦有过相关经验的朋友给解答一下,分不多了 请见谅

时间:2022-02-19 08:39:25
系统 OS X 10.10.2
编辑+编译环境 :sublime 3059
使用语言 C (不是C++)

我在网上找了一个 可以在linux上转码的简单例子,拿到我这 想试试 代码如下

#include <stdio.h> 
#include <iconv.h> 
#include <string.h> 

#define BUFLEN 256 

char outbuf[BUFLEN]; 
char inbuf[BUFLEN] = "characters convertion"; 

int main() 
{     
     char *pin = inbuf; 
     char *pout = outbuf; 
        
     int inlen = strlen(pin); 
     int outlen = BUFLEN; 

     int retsize; 

     iconv_t cd; 

     cd = iconv_open("UTF-8", "GBK"); 

     if((iconv_t)-1 == cd) { 
             perror("iconv_open error"); 
             return -1; 
     } 

     retsize = iconv(cd, &pin, (size_t *)&inlen, &pout, (size_t *)&outlen); 

     if((size_t)-1 == retsize) { 
             perror("iconv error"); 
             return -2;    
     } 

     if(outlen > 0) { 
             printf("%s\n", outbuf); 
     } 

     iconv_close(cd); 

     return 0; 
}

=================报错如下
Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      _main in go-2c8538.o
  "_iconv_close", referenced from:
      _main in go-2c8538.o
  "_iconv_open", referenced from:
      _main in go-2c8538.o
ld: symbol(s) not found for architecture x86_64
======================================通过网上搜索,说是缺少libiconv.dylib 
那么 我 include <libiconv.dylib> 
告知我
fatal error: 'libiconv.dylib' file not found
#include <libiconv.dylib>
         ^
1 error generated.
[Finished in 0.3s with exit code 1]
========================================== 现在我找的几个libiconv.dylib 全都不在系统文件下,是不是必须在系统文件下才可以呢? 还有 include<libiconv.dylib>  这样是动态加载吗?因为很久不用C 也没有找到相关的方案,麻烦有过相关经验的大牛 给讲解讲解,小弟万分感谢!!!!

1 个解决方案

#1


#pragma comment(lib,"libiconv.dylib")
如果你编译器支持的话。

否则,
在你编译链接环境中找
类似VS20XX
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项
项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
或类似gcc/g++
-L库所在目录 -l库

#1


#pragma comment(lib,"libiconv.dylib")
如果你编译器支持的话。

否则,
在你编译链接环境中找
类似VS20XX
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项
项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
或类似gcc/g++
-L库所在目录 -l库