【问题标题】:Pass parameters when compiling a dll in c在c中编译dll时传递参数
【发布时间】:2014-05-13 08:35:58
【问题描述】:

在VS中编译项目时可以发送参数吗?

我有一个 .dll,它必须针对更多国家/地区进行编译。国家 id 需要代码,这就是为什么我需要为每个国家/地区单独构建。所以,我在想是否有办法在编译时将国家 id 作为参数发送,而不是每次需要为某个国家/地区进行构建时都修改代码?

【问题讨论】:

  • 你考虑过从配置文件中加载国家参数吗?
  • 预定义的预处理器宏?
  • 预处理符号,以及多种配置?
  • 我对这些东西不熟悉...但是多种配置听起来像是一种选择。我会试试看。谢谢
  • 您可以添加一个Initialize方法并将国家代码传递给该方法。

标签: c++ c visual-studio compiler-construction


【解决方案1】:

我将简要介绍上述每种方法的优缺点,尽管我倾向于使用语言环境文件方法,除非有非常强烈的案例或要求,通过单独编译的 dll 进行混淆。

  • 通过区域设置资源文件加载因国家/语言而异的内容;代码将保持不变,但字符串、公式等都可以从文件系统上的资源中加载,该资源具有所选语言环境的相关条目。
    • 优势:单一代码库;多个语言环境文件;易于代码维护;单一版本针对资源存在的所有语言环境;可以通过添加一个简单的资源/语言环境文件轻松扩展到新区域
    • 缺点:需要外部资源/语言环境文件
  • 使用#define 包装代码,以便每个编译路径依赖于特定的#define
    • 优点:发布更安全,因为所有材料都在编译后的 dll 中;
    • 缺点:编译比较复杂,需要参数化;添加新的语言环境意味着向代码库添加代码;引入错误的范围乘以要支持的语言环境数量 + 1
  • 多种配置:这与使用#defines 具有相同的问题和优势

【讨论】:

    猜你喜欢
    • 2014-06-26
    • 2023-03-10
    • 1970-01-01
    • 2016-02-23
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多