首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误lnk2001:闭锁,readdir,opendir

错误lnk2001:闭锁,readdir,opendir
EN

Stack Overflow用户
提问于 2014-04-15 08:37:35
回答 1查看 1.6K关注 0票数 0

我正在尝试将一个c++项目从linux导入到windows (vs2010)。我的问题是使用污染引起的。我已经从这里下载了dirent的windows版本:分流。然而,当我编译我的项目时,我会得到以下错误:

代码语言:javascript
复制
1>DBreading.obj : error LNK2001: unresolved external symbol _closedir
1>DBreading.obj : error LNK2001: unresolved external symbol _readdir
1>DBreading.obj : error LNK2001: unresolved external symbol _opendir

我做了一点研究,发现我正在使用一些unix函数。我的代码是:

代码语言:javascript
复制
#include <DBreading.h>
#include <Detection.h>

#define _POSIX_SOURCE
#include <sys/stat.h>
#include <unistd.h>
#undef _POSIX_SOURCE

DBreading::DBreading(){}

vector <string> DBreading::listFile(string path){

    vector<string> directories;

    DIR *pDIR;
    const char * c = path.c_str();
    struct dirent *entry;
    if( pDIR=opendir(c) ){
        while(entry = readdir(pDIR)){
        if( strcmp(entry->d_name, ".") != 0 && strcmp(entry->d_name, "..") != 0 )
            //cout << entry->d_name << "\n";
            directories.push_back( entry->d_name);
        }
        closedir(pDIR);
    }

    // directories stores all subfolders or sub-files of a given path directory
    return directories;
}

您知道窗口中的闭锁器、readdir和opendir的对应函数是什么吗?

代码语言:javascript
复制
1>------ Rebuild All started: Project: myProject, Configuration: Release Win32 ------
1>  DBreading.cpp
1>DBreading.cpp(46): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(52): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(53): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(90): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(97): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(116): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(122): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(123): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(159): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.cpp(166): warning C4018: '<' : signed/unsigned mismatch
1>  Detection.cpp
1>c:\opencv-2.4.6.1\install\include\opencv2\flann\logger.h(66): warning C4996: 'fopen':    
 This function or variable may be unsafe. Consider using fopen_s instead. To disable   
 deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  1>          C:\Program Files\Microsoft Visual Studio 10.0\VC\include\stdio.h(234) :
 see 
declaration of 'fopen'
1>  main.cpp
1>main.cpp(120): warning C4018: '<' : signed/unsigned mismatch
1>main.cpp(166): warning C4018: '<' : signed/unsigned mismatch
1>main.cpp(182): warning C4018: '<' : signed/unsigned mismatch
1>main.cpp(206): warning C4018: '<' : signed/unsigned mismatch
1>main.cpp(268): warning C4018: '<' : signed/unsigned mismatch
1>DBreading.obj : error LNK2001: unresolved external symbol _closedir
1>DBreading.obj : error LNK2001: unresolved external symbol _readdir
1>DBreading.obj : error LNK2001: unresolved external symbol _opendir
1>C:\Documents and Settings\chrathan.ITI-THERMI\My Documents\Visual Studio    
2010\Projects\myProject\Release\myProject.exe : fatal error LNK1120: 3 unresolved 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 08:45:29

您可以使用FindFirstFileFindNextFileFindClose (我相信它们在windows.h中)。

有关示例,请参见这篇MSDN文章

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23078514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档