【问题标题】:Installing SystemC for VS2013为 VS2013 安装 SystemC
【发布时间】:2017-06-18 20:08:18
【问题描述】:

我正在使用带有 Visual Studio Professional 2013 的 Windows 10 64 位计算机,并且我想安装 SystemC。我下载了SystemC 2.3.1 并尝试按照提供的“安装说明”进行操作,但它们有点过时了。

首先,它说“适用于 Windows 7 机器上的 VS 2005 及更高版本”,但我使用的是 Windows 10,但我仍然尝试遵循它。其次,不能按照那里的说明包含srclib 文件,因为此方法在VS2013 中已更改。 Tools->Options->Projects->VCC++ 方向选项卡似乎不再有全局设置。

现在,我能够成功构建 SystemC.sln 解决方案。但是,当我尝试构建示例项目时,出现以下错误:

LINK:致命错误 LNK1104:无法打开文件 'C:\Users\Andrew\Downloads\systemc-2.3.1a\systemc-2.3.1a\msvc80\SystemC\Debug.obj'

尽管我认为我在项目属性中正确指定了srclib 目录。

谁能解释如何在 Windows 10 x64 上使用 VS2013 构建 SystemC?

【问题讨论】:

  • 我现在在 Visual Studio 2017 社区中使用 SystemC 2.3.1a。创建项目时,您需要 1) 在 C/C++ 选项中添加 /vmg /MTd 标志 2) 在链接器选项中指定库的路径。如果有帮助,我可以为 VS2017 创建分步解答。
  • 如果你能提供这将是有帮助的。我不确定它是否适用于 VS2013,但我会尝试,因为我尝试过的所有其他方法都没有奏效。
  • 好的,接下来几个小时请继续关注。请注意,带有“官方支持”VS2013 的 SystemC 2.3.2 将于今年推出。但我多年来在 VS2013/2015 中使用 2.3.1 没有太多问题。
  • 是的,我必须使用 2.3.1,因为它实际上是我正在学习的课程,他“推荐”使用 VS 2013,因为他认为新版本有问题。为了简单起见,我想我会按照他喜欢的方式做,以防我以后遇到问题。

标签: visual-studio-2013 systemc


【解决方案1】:

更新:如果您将 CMake 与 Visual Studio 一起使用,请检查 Setting up a SystemC project with CMake: undefined reference to `sc_core

目前我没有安装 MSVC2013,所以这里是适用于我的 MSVC2017 的步骤。

  1. http://accellera.org/downloads/standards/systemc下载最新的SystemC
  2. 在 Visual Studio 中打开 systemc-2.3.1a\msvc80\SystemC\SystemC.sln
  3. Visual Studio 将提供更新解决方案,单击确定。您可以忽略带有警告的报告。
  4. 在 VS 菜单栏中将配置设置为“调试”“Win32”。 (在我的情况下,默认情况下已经选择了)
  5. 构建解决方案 (F7)

    在控制台中,您可能会看到如下消息:

    未知的编译器版本 - 请运行配置测试并报告结果

    您可以忽略它们。解决方案应该没有错误地构建:

    ========== 构建:1 成功,0 失败,0 最新,0 跳过 ==========

  6. 因此,您将在 systemc-2.3.1a\msvc80\SystemC\Debug 中拥有 SystemC.lib

现在您可以创建一些测试 SystemC 项目了。

  1. 文件->新建->项目-> Win32控制台应用程序
  2. 在解决方案资源管理器中右键单击项目 -> 属性
  3. 在配置属性 -> C/C++ -> 常规-> 附加包含目录

    添加路径到:\systemc-2.3.1a\src

  4. 在配置属性 -> C/C++ -> 代码生成 -> 运行时库

    选择:多线程调试 (/MTd)

  5. 在配置属性 -> C/C++ -> 语言 -> 启用运行时类型信息

    选择:是 (/GR)

  6. 在配置属性 -> C/C++ -> 命令行 -> 附加选项

    类型:/vmg

  7. 在配置属性 -> 链接器 -> 常规 -> 附加库目录中

    添加路径到:systemc-2.3.1a\msvc80\SystemC\Debug

  8. 在配置属性 -> 链接器 -> 输入 -> 附加依赖项

    添加:SystemC.lib

现在是时候输入一些代码了。例如这个“Hello world”:

#include "stdafx.h"

struct test_module : sc_module {
    SC_HAS_PROCESS(test_module);

    test_module(::sc_core::sc_module_name) {
        SC_THREAD(test_thread);
    }

    sc_signal<std::string>  message{ "message" };

    void test_thread() {
        message.write("Hello world!");
        wait(1, SC_NS);
        cout << message.read() << endl;
        sc_stop();
    }
};

int sc_main(int argc, char** argv)
{
    test_module tmod{ "tmod" };
    sc_start();
    return 0;
}

stdafx.h 中添加:

 #include <systemc.h>
  1. 构建项目,它会失败:

    \systemc-2.3.1a\src\systemc.h(120): error C2039: 'gets': is not a member of 'std'

gets 在最新的 MSVC 中已从 std 命名空间中删除,但这并不是真正需要的。 因此,只需打开 systemc.h 并注释掉第 120 行:

//    using std::gets;
  1. 如果您收到有关 sprintf 的错误信息

_CRT_SECURE_NO_WARNINGS 添加到预处理器定义列表

  1. 重新构建。在不调试的情况下运行 (Ctrl+F5)。您应该会在控制台上看到以下介绍测试:
    SystemC 2.3.1-Accellera --- Feb  1 2017 14:43:06
    Copyright (c) 1996-2014 by all Contributors,
    ALL RIGHTS RESERVED

    Hello world!

    Info: /OSCI/SystemC: Simulation stopped by user.
    Press any key to continue . . .

希望有帮助

【讨论】:

  • 谢谢!我试一试,让你知道会发生什么。
  • 好吧,我刚试了一下,我收到以下错误:1>c:\users\andrew\downloads\systemc-2.3.1a\systemc-2.3.1a\src\sysc\datatypes\ int\sc_nbutils.h(151):错误 C4996:“sprintf”:此函数或变量可能不安全。考虑改用 sprintf_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。详细信息请参见在线帮助。 1> c:\program files (x86)\microsoft visual studio 12.0\vc\include\stdio.h(356) : 见“sprintf”声明
  • 在将 _CRT_SECURE_NO_WARNINGS 添加到预处理器定义列表后,我重建并通过了!感谢您的帮助!
  • 看起来在我的情况下它已经默认启用。我已经添加它来回答,以防万一有人遇到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多