不是问题,我只是搜索互联网寻找这个问题的解决方案,并认为我会与SO的优秀人员分享.我会用简单的术语来说明新手可以访问它.:)(如果这是错误的地方,请道歉 - 只是试图提供帮助.)
几乎所有尝试使用Eclipse C/C++ IDE的用户OS X Snow Leopard都会出现此问题,但对于在Leopard中使用Eclipse C/C++ IDE并且无法工作的人(像我一样)特别烦人当他们升级时,再次使用Eclipse.当用户去构建/编译/链接他们的软件时,会出现问题.他们收到以下错误:
发射失败.找不到二进制文件.
此外,左侧项目窗口中的"二进制"分支根本不存在.
问题:Snow Leopard附带的GCC 4.2(GNU编译器集合)是默认情况下以64位编译二进制文件.不幸的是,Eclipse使用的链接器不理解64位二进制文件; 它读取32位二进制文件.这里可能还有其他问题,但简而言之,它们最终没有生成二进制文件,至少没有Eclipse可以读取的文件,这转化为Eclipse无法找到二进制文件.因此错误.
一种解决方案是在制作文件时添加-arch i686标志,但每次手动制作文件都很烦人.幸运的是,Snow Leopard还附带了GCC 4.0,默认情况下编译为32位.因此,一种解决方案仅仅是将其链接为默认编译器.这就是我做的方式.
解决方案:GCC位于/ usr/bin中,通常是隐藏文件夹,因此除非您明确告诉系统您要查看隐藏文件夹,否则无法在Finder中看到它.无论如何,你要做的是转到/ usr/bin文件夹并删除链接GCC命令和GCC 4.2的路径,并添加一个链接GCC命令和GCC 4.0的路径.换句话说,当您或Eclipse尝试访问GCC时,我们希望命令转到默认情况下以32位构建的编译器,以便链接器可以读取文件; 我们不希望它转到以64位编译的编译器.
执行此操作的最佳方法是转到Applications/Utilities,然后选择名为Terminal的应用程序.应该出现文字提示.它应该说"(计算机名称):〜(用户名)$"(最后为用户输入一个空格).完成上述任务的方法是输入以下命令,按顺序输入每个命令VERBATIM,然后在每个单独的行后按Enter键.
cd /usr/bin
rm cc gcc c++ g++
ln -s gcc-4.0 cc
ln -s gcc-4.0 gcc
ln -s c++-4.0 c++
ln -s g++-4.0 g++
Run Code Online (Sandbox Code Playgroud)
像我一样,您可能会收到一条错误消息,告诉您无权访问这些文件.如果是这样,请尝试以下命令:
cd /usr/bin
sudo rm cc gcc c++ g++
sudo ln -s gcc-4.0 cc
sudo ln -s gcc-4.0 gcc
sudo ln -s c++-4.0 c++
sudo ln -s g++-4.0 g++ …Run Code Online (Sandbox Code Playgroud) 有没有办法使用LINQ将id = 10的项目作为列表中的第一项?
Item A - id =5 Item B - id = 10 Item C - id =12 Item D - id =1
在这种情况下,我如何优雅地将项目C移动到我的List<T>收藏的顶部?
这是我现在最好的:
var allCountries = repository.GetCountries();
var topitem = allCountries.Single(x => x.id == 592);
var finalList = new List<Country>();
finalList.Add(topitem);
finalList = finalList.Concat(allCountries.Where(x=> x.id != 592)).ToList();
Run Code Online (Sandbox Code Playgroud) System.Drawing.Image我的程序中有一个.该文件不在文件系统中,而是保存在内存中.我需要从中创建一个流.我该怎么做呢?
我有一个sumranges()函数,它对元组元组中找到的所有连续数字的范围求和.为了显示:
def sumranges(nums):
return sum([sum([1 for j in range(len(nums[i])) if
nums[i][j] == 0 or
nums[i][j - 1] + 1 != nums[i][j]]) for
i in range(len(nums))])
>>> nums = ((1, 2, 3, 4), (1, 5, 6), (19, 20, 24, 29, 400))
>>> print sumranges(nums)
7
Run Code Online (Sandbox Code Playgroud)
如您所见,它返回元组内连续数字的范围数,即:len((1,2,3,4),(1),(5,6),(19,20),( 24),(29),(400))= 7.元组总是有序的.
我的问题是我的sumranges()很糟糕.我讨厌看着它.我现在只是迭代元组和每个子元素,如果数字不是(1 +前一个数字),则分配1,并总计总和.我觉得我错过了一种更容易实现既定目标的方法.有没有人知道更多的pythonic方式来做到这一点?
编辑:我已经对迄今为止给出的所有答案进行了基准测试.感谢大家的回答.
基准测试代码如下,使用100K的样本大小:
from time import time
from random import randrange
nums = [sorted(list(set(randrange(1, 10) for i in range(10)))) for
j in range(100000)]
for func in sumranges, alex, matt, redglyph, ephemient, ferdinand: …Run Code Online (Sandbox Code Playgroud) 什么是一些未包含的键绑定?
我在SqlServer DB存储过程中发现了类似的东西:
SELECT stuff
FROM mytable
WHERE mytable.column = + @parameter
Run Code Online (Sandbox Code Playgroud)
它似乎运行没有错误,所以我认为它没关系."+"会做什么?
(毫不奇怪,这是一个难以有效搜索的主题,所以如果这是重复,我会提前道歉.)
考虑以下代码
public class A {
public static void main(String[] args) {
new A().main();
}
void main() {
B b = new B();
Object x = getClass().cast(b);
test(x);
}
void test(Object x) {
System.err.println(x.getClass());
}
class B extends A {
}
}
Run Code Online (Sandbox Code Playgroud)
我期望输出"A级",但我得到"A级B级".
有没有办法将对象x转换为A.class,所以当在方法调用中使用时,运行时会认为x是A.class?
如何改进此用户名/密码检查?
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Login(FormCollection collection)
{
var users =
(from p in _dataContext.Users
where p.Name == collection["Username"] && p.Password == collection["Password"]
select p);
if (users.Count() > 0)
{
// Login Succeed
// To get the username I should do something like users.First().Name
// and that's really bad...
return RedirectToAction("Login");
}
else
{
// Login Faild
return View();
}
}
Run Code Online (Sandbox Code Playgroud)