编译程序

如何用C#动态编译、执行代码

╄→гoц情女王★ 提交于 2020-04-04 07:38:11
 在开始之前,先熟悉几个类及部分属性、方法: CSharpCodeProvider 、 ICodeCompiler 、 CompilerParameters 、 CompilerResults 、 Assembly 。    一、CSharpCodeProvider     提供对C#代码生成器和代码编译器的实例的访问。如果要动态生成VB代码,可以使用 VBCodeProvider 。      CreateCompiler() :获取编译器的实例。    二、ICodeCompiler     定义用于调用源代码编译的接口或使用指定编译器的 CodeDOM 树。每种编译方法都接受指示编译器的 CompilerParameters 对象,并返回指示编译结果的 CompilerResults 对象。      CompilerAssemblyFromSource(CompilerParameters option, string source) :使用指定的编译器,从包含源代码的字符串设置编译程序集。    三、CompilerParameters      表示用于调用编译器的参数。      ReferencedAssemblies :获取当前项目所引用的程序集。 Add 方法为程序集添加引用。      GenerateExecutable :获取或设置一个值

编译Qt以及驱动的一点总结吧

血红的双手。 提交于 2020-04-04 06:49:33
下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的。只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查资料看博客,一定要注意博文的文字细节,有时候差几个字就能让你费很大的劲,四处碰壁。 首先解压源码包到你想要保存编译的位置,注意文件目录一定不能包含中文和空格! 由于Qt4.8在VS环境下的一些问题,为了避免编译中途出现,我总结了3个地方需要修改。 (1) 删除源码包中bin目录下的syncqt和syncqt.dat文件,如你不放心可将其改名或剪切到别的位置。如不修改将发生 Perl not found in environment - cannot run syncqt 错误。 (2) 修改\mkspecs\win32-msvc2010下的qmake.conf文件,将其中的 QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t-改成QMAKE_CFLAGS=

Qt+VS2005(配置步骤)

对着背影说爱祢 提交于 2020-04-04 06:22:03
  因为工作需要,这些天参考网上的各种文章,花了不少的时间,终于将QT4.8.4安装在VS2005上了,并测试成功!以下是安装过程: 一、所需程序   VS2005 // VS2005 的安装程序;可以用集成sp1的版本   qt-everywhere-opensource-src-4.8.4.zip // QT 4.8.4 的 Windows 源代码   qt-vs-addin-1.1.11-opensource.exe // VS2005 的 for QT 插件 二、 操作步骤 2.1 安装 VS2005 2.2 安装 QT4.8.4源代码   将qt-everywhere-opensource-src-4.8.4.zip 拷贝到某个目录,如C:/Qt/ 目录下,解压,解压路径为C:/Qt/qt-4.8.4(解压路径不要包含空格,否则会编译出错); 2.3 编译QT 4.8.4   ① Windows2000/xp中新增一个系统环境变量QMAKESPEC,值为   win32-msvc2005   ② 在系统环境变量的path中添加C:/Qt/qt-4.8.4/bin   ③ 从Windows 的“开始”按钮点击,打开 VS2005 Command Program;   路径如下:   “Start -> Program -> Microsoft Visual Studio

Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布

♀尐吖头ヾ 提交于 2020-04-04 06:17:33
原文地址: http://blog.csdn.net/cjyl25/article/details/6899229 首先是准备工作,去QT主页下载独立的QT类库安装包以及完整QT SDK安装包,还有QT Creator for windows 版 下载地址: http://qt.nokia.com/downloads-cn 最新是 4.7.4 版 还有一个mingw 4.4.5 静态编译版,用来解决mingwm10.dll、 libgcc_s_dw2-1.dll,两个DLL依赖的问题 下载地址是: http://code.google.com/p/qp-gcc/downloads/list 四个文件分别是: (1) qt-creator-win-opensource-2.3.1.exe // IDE 开发框架 (2) qt-win-opensource-4.7.4-mingw.exe // QT类库安装包 (3) Qt_SDK_Win_offline_v1_1_3_en.exe // QT SDK 完整安装包 (4) mingw-static-4.4.5-all.7z // mingw 静态编译完整版 准备好上面四个文件之后,就可以安装了,安装顺序以上面的(1)--(4)的顺序进行安装 下面说一下安装时需要注意的地方, 第一步:安装的是 qt-creator

Windows下静态编译Qt4

时光毁灭记忆、已成空白 提交于 2020-04-04 06:10:02
既然是静态编译,那就要编译出来的程序不信赖于任何dll文件。 首先下载qt-win-opensource-4.7.4-mingw.exe: http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-mingw.exe 和MinGW-gcc440_1.zip: http://get.qt.nokia.com/misc/MinGW-gcc440_1.zip 然后依次解压MinGW-gcc440_1.zip、安装qt-win-opensource-4.7.4-mingw.exe。记得要将gcc的目录和qt的目录添加到环境变量中。 然后打开DOS窗口并切换到Qt的目录(比如我的是D:\Qt\4.7.4),再设置两个变量 set QTDIR=D:\Qt\4.7.4 set QMAKESPEC=win32-g++ 再编辑D:\Qt\4.7.4\mkspecs\win32-g++\qmake.conf文件(最好先备份),改两处: QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc 修改为 QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable

QT 4.7.3 交叉编译环境搭建

一曲冷凌霜 提交于 2020-04-04 05:37:15
测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 交叉编译器:arm-linux-gcc 4.4.4 tslib 1.4 下载 https://gitlab.com/tslib/tslib/-/archive/1.4/tslib-1.4.tar.gz qt-4.7.3 源码下载 http://download.qt.io/archive/qt/4.7/qt-everywhere-opensource-src-4.7.3.tar.gz 1. tslib移植 详细参照上节《tslib移植arm及使用》 ./autogen.sh ./configure --prefix=/home/vmuser/workspace/vm_tools/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=arm-fsl-linux-gnueabi-gcc make make install 2. QT源码编译与安装 1.编译qt 1)解压: tar xzvf qt-everywhere-opensource-src-4.7.3.tar.gzcd qt-everywhere-opensource-src-4.7.3 2)编译配置(裁剪QT) .

keil优化等级设置

回眸只為那壹抹淺笑 提交于 2020-04-04 01:53:04
keil优化等级设置 优化级别说明(仅供参考): 则其中的 Code Optimization 栏就是用来设置C51的优化级别。共有9个优化级别(书上这么写的),高优化级别中包含了前面所有的优化级别。现将各个级别说明如下: 0级优化: 1、 常数折叠:只要有可能,编译器就执行将表达式化为常数数字的计算,其中包括运行地址的计算。 2、 简单访问优化:对8051系统的内部数据和位地址进行访问优化。 3、 跳转优化:编译器总是将跳转延至最终目标上,因此跳转到跳转之间的命令被删除。 1级优化: 1、 死码消除:无用的代码段被消除。 2、 跳转否决:根据一个测试回溯,条件跳转被仔细检查,以决定是否能够简化或删除。 2级优化: 1、 数据覆盖:适于静态覆盖的数据和位段被鉴别并标记出来。连接定位器BL51通过对全局数据流的分析,选择可静态覆盖的段。 3级优化: 1、“窥孔”优化:将冗余的MOV命令去掉,包括不必要的从存储器装入对象及装入常数的操作。另外如果能节省存储空间或者程序执行时间,复杂操作将由简单操作所代替。 4级优化: 1、 寄存器变量:使自动变量和函数参数尽可能位于工作寄存器中,只要有可能,将不为这些变量保留数据存储器空间。 2、扩展访问优化:来自IDATA、XDATA、PDATA和CODE区域的变量直接包含在操作之中,因此大多数时候没有必要将其装入中间寄存器。 3、局部公共子式消除

大牛耗时一年:深入探索 Android 包体积优化,共三万字建议收藏上

跟風遠走 提交于 2020-04-04 00:04:05
由于文章特别长,建议先收藏再阅读。 在 Android 性能优化的知识体系当中,包体积优化一直被排在优先级比较低的位置,从而导致很多开发同学对自身应用的大小并不重视。在项目发展的历程中,一般可划分为如下三个阶段: 初创期 => 成长期 => 成熟期 通常来说,当应用处于成长期的中后阶段时,才会考虑去做系统的包体积优化,因此,只有在这个阶段及之后,包体积优化带来的收益才是可观的。 那么,包体积优化能够给我们带来哪些 收益 呢?如何全面对应用的包体积进行 系统分析 及 针对性优化呢?在这篇文章中,我们将一起进行深入地分析与探索。 1、瘦身优化及 Apk 分析方案介绍 1、瘦身优势 我们首先来介绍下,为什么我们需要做 APK 的瘦身优化? 主要有 三个方面 的原因: (1)下载转化率 APK 瘦身优化在实际的项目中优先级是比较低的,因为做了之后它的好处不是那么明显,尤其是那些还没有到 稳定期 的项目,我们都知道,App 的发展历程是从 项目初期 => 成长期 => 稳定期,对于处于 发展初期与成长期 的项目而言,可能会做 启动优化、卡顿优化,但是一般不会做 瘦身优化,瘦身优化 最主要的好处是对应用 下载转化率 的影响,它是 App 业务运营的重要指标之一,在项目精细化运营的阶段是非常重要的。 因为如果你的 App 与其它同类型的 App 相比 Apk 体积要更小的话,那么你的 App

java中的基本数据类型的转换

自闭症网瘾萝莉.ら 提交于 2020-04-03 10:26:53
本文参考了如下两篇文章: https://my.oschina.net/joymufeng/blog/139952 http://www.cnblogs.com/lwbqqyumidi/p/3700164.html Java中,经常可以遇到类型转换的场景,从变量的定义到复制、数值变量的计算到方法的参数传递、基类与派生类间的造型等,随处可见类型转换的身影。Java中的类型转换在Java编码中具有重要的作用。 首先,来了解下数据类型的基本理解:数据是用来描述数据的种类,包括其值和基于其值基础上的可进行的操作集合。 Java中数据类型主要分为两大类:基本数据类型和引用数据类型。 基本数据类型共有8种,分别是:布尔型boolean, 字符型char和数值型byte/short/int/long/float/double。由于字符型char所表示的单个字符与Ascii码中相应整形对应,因此,有时也将其划分到数值型中。引用类型具体可分为:数组、类和接口。因此java中类型的转化分为基本数据类型的转换和引用数据类型的转换,本文将针对 基本数据类型的转换 进行总结. 1.基本数据类型的类型转换 数据类型 所占字节 boolean 未定 byte 1字节 char 2字节 short 2字节 int 4字节 long 8字节 float 4字节 double 8字节

C++常见错误大全

戏子无情 提交于 2020-04-03 10:23:25
0. XXXX "is not a class or namespace"错误 最诡异的错误,提示意思很明显,说你写的名字既不是一个类也不是一个命名空间,虽然我C++水平不是很高,但再愚笨也不至于连类的格式class MyClass{....};也写不明白吧,报此错误原因显然跟它没关系,那又是怎么回事呢? 答案是:#include "stdafx.h"没放在代码最开头!!! stdafx.h知识简单说一下: 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC 标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 预编译头文件通过编译stdafx.cpp 生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。 没把:#include "stdafx.h"放在代码最开头会发生什么问题呢?编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它会跳过#include"stdafx. h"之前的指令,使用projectname.pch 编译这条指令之后的所有代码。因此,当然会出现找不到类的错误了。 因此,所有的CPP 实现文件第一条语句都应该是:#include "stdafx.h"。 一