我正在尝试使用BuildFile(build.xml)在Ant中构建项目.虽然ANT_HOME环境变量明显存在并且设置为"ant.bat"所在的路径,但它始终显示此错误消息.如何正确配置Ant以在Windows中编译构建?
谢谢
我有一个只导入的文件:
#include <iostream>
#include <stdio.h>
#include "cxcore.hpp"
#include "highgui.hpp"
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
}
Run Code Online (Sandbox Code Playgroud)
我尝试用g ++编译-I/usr/include/opencv -lopencv -lm m.cpp
但得到whit错误:
在/usr/include/opencv/cxcore.hpp:46中包含的文件中,来自m.cpp:5:/usr/include/opencv/cxmisc.h:214:错误:在'void之前的预期构造函数,析构函数或类型转换'/usr/include/opencv/cxmisc.h:220:错误:'int'之前的构造函数,析构函数或类型转换/usr/include/opencv/cxmisc.h:226:错误:'CV_INLINE'没有命名为输入/usr/include/opencv/cxmisc.h:516:错误:'CV_DEPTH_MAX'未在此范围内声明/usr/include/opencv/cxmisc.h:522:错误:'CV_DEPTH_MAX'未在此范围内声明/ usr/include/opencv/cxmisc.h:522:错误:'CV_CN_MAX'未在此范围内声明在m.cpp中包含的文件中:5:/usr/include/opencv/cxcore.hpp:70:错误:模板声明'cv :: CV_EXPORTS cv :: Size_'/usr/include/opencv/cxcore.hpp:71:错误:'cv :: CV_EXPORTS cv :: Point_'/usr/include/opencv/cxcore.hpp的模板声明: 72:错误:'cv :: CV_EXPORTS cv :: Rect_'/usr/include/opencv/cxcore.hpp:77的模板声明:错误:在'之前的预期初始化程序' fromUtf16'/usr/include/opencv/cxcore.hpp:78:错误:在'toUtf16'之前预期的初始化程序'/usr/include/opencv/cxcore.hpp:80:错误:'format'/ usr/include/opencv之前的预期初始化程序/cxcore.hpp:82:错误:在':'之前的预期初始化程序令牌m.cpp:38:错误:在输入结束时预期'}'
这是我的copencv lib内容:
alberto@zefiro:~$ ls /usr/include/opencv/
cvaux.h cvcompat.h cv.hpp cvtypes.h cvvidsurv.hpp cxcore.h cxerror.h cxmat.hpp cxoperations.hpp highgui.h ml.h
cvaux.hpp cv.h cvinternal.h cvver.h cvwimage.h cxcore.hpp cxflann.h cxmisc.h cxtypes.h highgui.hpp
Run Code Online (Sandbox Code Playgroud)
我在ubuntu 10.10上
我是编程新手.我不知道如何在Sublime Text 2中编译和运行一个简单的C程序.
(在大学时我被要求使用Turbo C++ 3.0,但我发现IDE非常古老.)
我正在使用Windows 8(x64).这是我点击构建时遇到的错误.

我正在运行Windows 8,我无法让javac工作.
我已将环境变量中的PATH设置为
C:\Program Files (x86)\Java\jdk1.7.0_17\bin
我曾尝试过有和没有';' 但无济于事.
我最近在桌面上遇到了这个问题并添加了; 虽然工作但不是这种情况.
我已经确保javac确实存在于bin中.
任何有关修复的建议都将不胜感激.
EDITS echo%PATH%给出:
C:\Users\Arktri\Desktop>echo %PATH%
C:\Program Files (x86)\Intel\iCLS Client\;
C:\Program Files\Intel\iCLS Client\;
C:\Windows\system32;C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;
C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;
C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;
C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;;
C:\Program Files (x86)\Java\jre7\bin
Run Code Online (Sandbox Code Playgroud)
确切的错误是:'javac'不被识别为内部或外部命令,可操作程序或批处理文件.
出于某种原因,以下代码正常编译:
public double getSomeDouble() {
return "" != null ? 3.7d : null;
}
Run Code Online (Sandbox Code Playgroud)
我通常希望Eclipse将其标记为错误(null不能转换为double原语).
只是为了支持我的假设,这段代码不起作用:
public double getSomeDouble() {
return null;
}
Run Code Online (Sandbox Code Playgroud)
Eclipse会将该return null行标记为错误,说明:
类型不匹配:无法转换
null为double
为什么它在前面的代码片段中没有说同样的东西?!
给出函数内的以下C#代码:
....
var documentCollection =
client.CreateDocumentCollectionQuery("dbs/" + database.Id)
.Where(c => c.Id == DocumentCollectionName)
.AsEnumerable()
.FirstOrDefault();
if (documentCollection == null)
{
documentCollection =
await
client.CreateDocumentCollectionAsync(
"dbs/" + database.Id,
new DocumentCollection { Id = DocumentCollectionName });
}
return client;
Run Code Online (Sandbox Code Playgroud)
注意:我没有返回documentCollection,我只需要初始化,如果还没有(CreateDocumentCollectionAsync调用).所以 - 在if块之后,documentCollection变成一个未使用的变量.
现在 - ReSharper建议将其优化为:
var documentCollection =
client.CreateDocumentCollectionQuery("dbs/" + database.Id)
.Where(c => c.Id == DocumentCollectionName)
.AsEnumerable()
.FirstOrDefault()
?? await
client.CreateDocumentCollectionAsync(
"dbs/" + database.Id,
new DocumentCollection { Id = DocumentCollectionName });
Run Code Online (Sandbox Code Playgroud)
并且现在表明这 …
在过去的几年里,我已经在python中编写了一个很好的小程序,现在我想分发它,但是我的第一次尝试没有遇到太多的热情,因为许多潜在用户不喜欢下载和安装的想法python和运行我的应用程序所需的所有依赖项.
我环顾了几个星期寻找一个解决方案,以某种方式将我的代码编译成易于为每个人运行的东西,但我对我发现的东西并不满意.
我对冻结应用程序而不是真正编译它的想法没有任何问题.这只意味着最终用户将等待几秒钟以下载应用程序并在他/她的硬盘上占用更多空间.
我的问题是找到一种方法将所有应用程序打包成每个操作系统的可执行文件(让我们说大的:windows,mac,linux - 显然是每个操作系统的不同可执行文件),而无需安装虚拟机或葡萄酒或类似的选项.我强烈怀疑这是可能的,因为我看到一堆ren'py游戏的打包方式与我想要打包我的应用程序完全一样,但我不知道如何为我的程序获得相同的结果.
原理上,我的应用程序需要一个控制台来运行,并包含一些自制的包,numpy和matplotlib.它还有一个系统,支持多种动态包含语言文件的语言,覆盖以前的设置:
exec('from lang.%s import lang' % language)
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能会产生一些问题.最后,程序需要一些文件夹来保存第一次运行中的设置,日志等,因此也应该包含这些文件夹.我的计算机运行ubuntu伙伴16.10(x64),python版本是2.7,但将来我打算将它翻译成python 3.创建的可执行文件可以是单个重文件,几乎包含所需的一切或轻量级文件,其他一切都可以发现在附近的文件夹; 我真的不喜欢一种解决方案或另一种解决方案.
我知道这个问题不时出现并且可能已经回答了,但我能找到的这类问题的最后一次出现可以追溯到2014年,如果我们考虑这个领域的变化有多快,这听起来像很久以前.
编辑:由于似乎没有我提出的条件的解决方案,我可以考虑设置一些模拟器/包装/兼容层/无论为不同的操作系统运行冰柜,但我不知道该怎么做.我在这里和那里读到,葡萄酒并不总是正常工作,并且在linux上找不到任何可以编译mac的东西.据我所知,程序不应该要求32/64位系统的不同编译,但如果有一种简单的方法来编译每种可能性它会很好.虚拟机仍然不行,现在我没有磁盘上的空间来设置两个或更多的虚拟机(这是ssd磁盘的重大缺点......),更不用说支付操作系统的许可证了每年使用几次编译一个免费软件.
假设我有两个C#应用程序 - game.exe(XNA,需要支持Xbox 360)和editor.exe(在WinForms中托管的XNA) - 它们共享一个engine.dll可以完成绝大部分工作的程序集.
现在让我们说我想添加一些基于C#的脚本(它不是"脚本",但我会称之为).每个级别都有自己继承自基类的类(我们称之为LevelController).
这些是这些脚本的重要约束:
它们需要是真实的,编译好的C#代码
他们应该需要最少的手动"粘合"工作,如果有的话
它们必须与其他所有内容在同一个AppDomain中运行
对于游戏 - 这非常简单:所有脚本类都可以编译成一个程序集(比如说levels.dll),并且可以根据需要使用反射来实例化各个类.
编辑要困难得多.编辑器能够在编辑器窗口中"玩游戏",然后将所有内容重置回原来的位置(这就是编辑器首先需要了解这些脚本的原因).
我想要实现的基本上是编辑器中的"重新加载脚本"按钮,它将重新编译并加载与正在编辑的级别相关联的脚本类,当用户按下"播放"按钮时,创建最近的实例编译脚本.
其结果将是编辑器中的快速编辑测试工作流程(而不是替代方案 - 保存级别,关闭编辑器,重新编译解决方案,启动编辑器,加载级别,测试).
现在我想我已经找到了实现这个目标的潜在方法 - 这本身就会产生一些问题(如下所示):
.cs将给定级别(或者,如果需要,整个levels.dll项目)所需的文件集合编译为临时的,唯一命名的程序集.那个集会需要参考engine.dll.如何在运行时以这种方式调用编译器?如何让它输出这样的程序集(我可以在内存中执行)吗?
加载新装配.我在同一个进程中加载具有相同名称的类是否重要?(我的印象是名称是由程序集名称限定的?)
现在,正如我所提到的,我无法使用AppDomains.但是,另一方面,我不介意泄漏旧版本的脚本类,因此卸载的能力并不重要.除非是吗?我假设加载可能几百个组件是可行的.
在播放关卡时,实例是从刚加载的特定程序集继承自LevelController的类.这该怎么做?
最后:
这是一种明智的做法吗?它可以做得更好吗?
更新:这些天我使用一种更简单的方法来解决潜在的问题.
./configure在Windows中相当于什么?
有时我下载一个C/C++库,当我使用make时,它会显示"use ./configure"但显然./configure只能在Linux机器上使用,而且库通常没有在Windows上编译的指令(尽管它们支持Windows) ,他们不提供说明).
例如,库wxSVG表示它可以在Windows上运行,但是当我下载它时,我没有看到任何在Windows上编译的指令,我只有Linux文件用于配置它.
让我们做一个非常简单的事情,
# Foo.pm
package Foo {
my $baz = bar();
sub bar { 42 }; ## Overwrite this
print $baz; ## Before this is executed
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以从test.pl运行代码中更改$baz设置并导致Foo.pm在屏幕上打印其他内容吗?
# maybe something here.
use Foo;
# maybe something here
Run Code Online (Sandbox Code Playgroud)
在编译器阶段是否可以强制上述内容打印7?
compilation ×10
java ×3
build ×2
c# ×2
c++ ×2
ant ×1
eclipse ×1
expression ×1
javac ×1
opencv ×1
optimization ×1
perl ×1
python ×1
python-2.7 ×1
resharper ×1
sublimetext2 ×1
windows ×1
windows-8 ×1