编译简单字符串

2024-02-27

只是想知道 c++ 或 c# 中是否有任何内置函数可以让您在运行时使用编译器?例如,如果我想翻译:

!print "hello world";

into:

MessageBox.Show("hello world");

然后生成一个exe,然后就可以显示上面的消息了?几年前我在网上看到过这样做的示例项目,但现在找不到了。


使用 C# 是可以的。看看这个示例项目 http://www.codeproject.com/KB/cs/runtimecompiling.aspx来自代码项目。

代码摘录

private Assembly BuildAssembly(string code)
{
    Microsoft.CSharp.CSharpCodeProvider provider = new CSharpCodeProvider();
    ICodeCompiler compiler = provider.CreateCompiler();
    CompilerParameters compilerparams = new CompilerParameters();
    compilerparams.GenerateExecutable = false;
    compilerparams.GenerateInMemory = true;
    CompilerResults results = compiler.CompileAssemblyFromSource(compilerparams, code);
    if (results.Errors.HasErrors)
    {
       StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
       foreach (CompilerError error in results.Errors )
       {
            errors.AppendFormat("Line {0},{1}\t: {2}\n", error.Line, error.Column, error.ErrorText);
       }
       throw new Exception(errors.ToString());
    }
    else
    {
        return results.CompiledAssembly;
    }
}

public object ExecuteCode(string code, string namespacename, string classname, string functionname, bool isstatic, params object[] args)
{
    object returnval = null;
    Assembly asm = BuildAssembly(code);
    object instance = null;
    Type type = null;
    if (isstatic)
    {
        type = asm.GetType(namespacename + "." + classname);
    }
    else
    {
        instance = asm.CreateInstance(namespacename + "." + classname);
        type = instance.GetType();
    }
    MethodInfo method = type.GetMethod(functionname);
    returnval = method.Invoke(instance, args);
    return returnval;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编译简单字符串 的相关文章

  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • 为什么 Joda 对象是不可变的?

    我读到 在 Java 版本低于 7 的情况下 Joda Time 对象比 Java 的内置对象更可靠 引用的一个原因是 Joda 对象是不可变的 为什么这有好处 如果我想更改 Joda DateTime 对象的年份 小时和时区 我需要制作三
  • 未定义的局部变量或方法“user_params”rails 4

    所以我遵循了 从头开始进行身份验证 的轨道演员 http railscasts com episodes 250 authentication from scratch http railscasts com episodes 250 au
  • 如何撤销 Kubernetes 中的客户端证书?

    我按照这篇文章了解了如何为 Kubernetes 集群中的用户设置 RBAC https medium com better programming k8s tips give access to your clusterwith a cl
  • 无法更改 标签的类别

    我试图找到页面上的所有标签并将其类从 multiimage 更改为 mySpace 但我在页面上看不到任何更改 当我将此元素登录到控制台时 我可以看到其 className 设置为 multiimage My code window onl
  • 通过 Django 管理中的内联显示编辑/添加外键对象

    我的 Complete Book 模型有一个 Book 的外键 书籍是我从已安装的应用程序中使用的东西 因此 外部应用程序 我希望能够直接从 Complete Book 管理员编辑 创建 书籍 这可能吗 我无法使用内联 因为我的外键关系与内
  • 从指向成员的指针进行模板推导,其中至少有一个指向成员的指针已知

    考虑一个具有接受指向成员函数的指针的静态方法模板的结构 请注意 当方法的参数之一是实际的指向成员函数的指针时 可以推导出两个模板参数 无论另一个参数是否是nullptr or not 请参阅以下代码下面的问题 struct Checker
  • Git 在离线状态下设置跟踪分支

    git push u origin branch binds branch with 起源 分支以便后续推送branch可以只是git push 据我所理解 我可以为一个全新的仓库设置这种跟踪吗 起源 分支尚不存在 离线时 我想让它成为所有
  • 如何在 Docker Compose 中连接不同网络中的容器?

    version 3 7 networks sydney name sydney london name london services sydney service image whatever hostname sydney servic
  • SQL Server 如何将行转置为列,无需 PIVOT 或 UNPIVOT 或聚合 [重复]

    这个问题在这里已经有答案了 EDIT 1 两种解决方案和 DUPE 链接都有效 但它们都没有保留我想要的列顺序 所有解决方案均按字母顺序对结果列名称进行排序 如果有人有解决方案 请在评论中发表 EDIT 2 taryn https stac
  • 根据半径从地图数据库中选择点

    我有一个包含点的纬度 经度的数据库 如果我想选择以特定点为中心的特定范围内的所有点 它可以正常工作 但是如果有任何点位于该中心 则它将不会被选择 我使用这个查询 SELECT 6371 acos cos radians 27 5796498
  • 将图像设置为图像源时覆盖(重新保存)图像时出现问题

    大家好 我在图像权限方面遇到一些问题 我正在从文件加载图像 调整其大小 然后将其保存到另一个文件夹 然后我像这样显示 uriSource new Uri Combine imagesDirectoryTemp generatedFileNa
  • 使用 jQuery POST json 来表达

    我在将 JSON 数据从客户端发送到运行 Express 的节点服务器时遇到问题 这是一个简单的服务器 它演示了我的问题 var express require express var app express app configure f
  • Firefox Addon 观察者 http-on-modify-request 无法正常工作

    我有一个weird我的插件中的错误 插件本身需要添加特定域的请求头参数 一切正常 但错误是 观察者 http on modify request 在开始时不会被调用 只有当我重新加载页面时 它才会工作 I mean 我访问 mysite c
  • python - 从图表区域中切出双条

    I am plotting a double bar graph and line graph on the same chart For the first and last x tick only one bar is visible
  • 在 JavaScript 中,confirm() 是如何工作的

    我当时正在思考 JavaScript 中的原生函数是如何工作的 我可以跨越alert 我想它必须使用createElement 或制作一个元素并使用innerHTML 但我无法弄清楚创建弹出元素并创建两个按钮 然后返回所需的完整代码true
  • 摩卡的全局“before”和“beforeEach”?

    我现在使用 mocha 进行 javascript 单元测试 我有几个测试文件 每个文件都有一个before and beforeEach 但它们是完全相同的 我如何提供全球before and beforeEach对于他们所有人 或其中一
  • 如何使用 HTML5 本地存储保存表单中的数据?

    我有一个表单可以登录到一个网站 但不能登录到我的网站 我希望它们通过 HTML5 本地存储保存在我的网站中的表单数据 但不知道如何 任何想法 我的表格是这样的
  • YouTube 嵌入式播放器在 iOS 8 上因 gpus_ReturnNotPermissionKillClient 而崩溃

    我使用 UIWebView 制作了一个 iOS 应用程序 它加载 YouTube iFrame 播放器 一切都很顺利 它甚至可以继续在后台播放视频 只有一个问题 这个问题是这个月才出现的 而且不仅出现在最新的更新 iOS 8 3 上 而且出
  • Dropzone.js 和 ajax

    我使用 dropzone js 并使用 ajax 加载它 我的菜单 ID menu 上传文件应出现在 div1 中 回调函数不起作用 我用alert test 替换了Dropzone discover document ready func
  • 编译简单字符串

    只是想知道 c 或 c 中是否有任何内置函数可以让您在运行时使用编译器 例如 如果我想翻译 print hello world into MessageBox Show hello world 然后生成一个exe 然后就可以显示上面的消息了