我正在尝试使用来自http://www.ece.uvic.ca/~frodo/jasper/的libjasper作为一个静态库,在带有VC9的windows上编译来自http://www.cybercom.net/~dcoffin/dcraw/的dcraw.c。在此过程中,我解决了几个问题,最终得到了三个链接错误。
1>dcraw.obj : error LNK2001: unresolved external symbol _ftello
1>dcraw.obj : error LNK2001: unresolved external symbol _fseeko
1>dcraw.obj : error LNK2001: unresolved external symbol _getc_unlocked前两个问题似乎很容易解决,我补充道。
#define fseeko _fseeki64
#define ftello _ftelli64这就完成了,但是第三个呢:
1>dcraw.obj : error LNK2001: unresolved external symbol _getc_unlocked我如何在windows中用visual studio解决这个问题呢?
谢谢。
发布于 2012-02-03 00:56:14
getc_unlocked的实际等价物不是getc,而是_fgetc_nolock。因此,假设编写原始代码的人知道他在做什么,并且有一些理由倾向于使用线程不安全的版本,那么您可能希望这样做
#define getc_unlocked _fgetc_nolock发布于 2012-02-03 00:48:36
#define getc_unlocked _fgetc_nolock唯一的区别是getc是线程安全的(而且可能更慢)。
http://pubs.opengroup.org/onlinepubs/000095399/functions/getc_unlocked.html
编辑:正如@Fanael在另一个答案中指出的那样,_fgetc_nolock是比getc更好的替代品。
发布于 2012-02-03 00:50:21
这是一个posix函数,不是在win32上,只需这样做
#define getc_unlocked fgetc
https://stackoverflow.com/questions/9115932
复制相似问题