【问题标题】:Microsoft Visual Studio 2010 doesn't work [closed]Microsoft Visual Studio 2010 不起作用 [关闭]
【发布时间】:2014-06-05 17:07:44
【问题描述】:

我在 VS 2010 中制作了一个控制台应用程序以获取内核数: 这是代码:

#include <iostream>
#include "stdio.h"
#include "stdafx.h"
using namespace std;

int main(){
        FILE * fp;
        char res[128];
        fp = popen("/bin/cat /proc/cpuinfo |grep -c '^processor'","r");
        fread(res, 1, sizeof(res)-1, fp);
        fclose(fp);
        cout << "number of core: " << res[0] << endl;
        return 0;
}

这就是它所显示的:

**1>------ Build started: Project: project_scs, Configuration: Debug Win32 ------
1>Build started 6/5/2014 8:01:03 PM.
1>InitializeBuildStatus:
1>  Touching "Debug\project_scs.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>  project_scs.cpp
1>c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(1): warning C4627: '#include <iostream>': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(2): warning C4627: '#include "stdio.h"': skipped when looking for precompiled header use
1>          Add directive to 'StdAfx.h' or rebuild precompiled header
1>c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(9): error C3861: 'popen': identifier not found
1>c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(10): error C3861: 'fread': identifier not found
1>c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(11): error C3861: 'fclose': identifier not found
1>c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(12): error C2065: 'cout' : undeclared identifier
1>c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(12): error C2065: 'endl' : undeclared identifier
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.08
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========**

有什么问题,我该怎么办?谢谢。

【问题讨论】:

  • #include "stdafx.h" 应该出现在任何其他 #include 指令之前的第一行。
  • 谢谢。现在只剩下 1 个错误:error C3861: 'popen': identifier not found
  • /bin/cat /proc/cpuinfo 您是否在 Windows 命令提示符下输入了该命令以查看它是否真的有效?
  • 好吧,我现在知道它适用于 Linux。我在 Internet 上搜索,发现获取 CPUINFO 是使用“C:\>wmic cpu get caption”,这也不起作用。您知道必须使用哪个实际路径吗?谢谢。

标签: c++ visual-studio-2010 get cpu


【解决方案1】:

确实有很多问题,但主要问题是您错误地使用了预编译头文件。有关更多信息,请查看 MSDN。

另外,popen() 不是 Win32 API 的一部分。它在 Posix 中,但您没有使用它。不过,您可能想结帐_popenhttp://msdn.microsoft.com/en-us/library/96ayss4b%28v=vs.100%29.aspx

【讨论】:

  • 感谢您的建议。我可以用什么来替换 popen() ?
  • @user3677169 - 查看更新后的答案。如果您想感谢我,也请支持我的回答:)
  • 我看到使用了_popen而不是popen。这仍然对我不起作用..
【解决方案2】:

首先阅读您的错误:1&gt;c:\users\rares992\documents\visual studio 2010\projects\project_scs\project_scs\project_scs.cpp(2): warning C4627: '#include "stdio.h"': skipped when looking for precompiled header use

然后还要考虑 Linux 方法(阅读 /proc)不太可能在可以运行由 Visual Studio 创建的可执行文件的系统上工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多