问题列表 - 第27986页

链接时可以混用静态和共享对象库吗?

我有一个C项目,生成十个可执行文件,我想要静态链接所有这些可执行文件.我面临的问题是这些可执行文件中的一个使用第三方库,其中只有共享对象版本可用.

如果我将-static标志传递给gcc,ld将会错误地说它无法找到有问题的库(我认为它正在寻找.a版本)并且不会构建可执行文件.理想情况下,如果无法找到静态库,我希望能够尽可能地告诉'ld'静态链接并故障转移到共享对象库.

在interium中我尝试了类似gcc -static -lib1 -lib2 -shared -lib3rdparty foo.c -o foo.exe希望'ld'在lib1和lib2中静态链接,但只对lib3rdparty有运行时依赖.不幸的是,这不符合我的意图; 相反,-shared标志覆盖了-static标志,所有内容都被编译为共享对象.

是静态链接一个全有或全无的交易,还是有某种方式我可以混合和匹配?

c linker static gcc

53
推荐指数
1
解决办法
3万
查看次数

在Python中的Tkinter.Tk窗口时,可以为清除任务覆盖哪种方法?

class MainGUI(Tkinter.Tk):
    # some overrides

# MAIN 

gui = MainGUI(None)
gui.mainloop()
Run Code Online (Sandbox Code Playgroud)

但是当用户关闭窗口时,我需要进行一些清理。我可以覆盖Tkinter.Tk中的哪个方法?

python destructor tkinter

1
推荐指数
2
解决办法
2549
查看次数

Authlogic_OpenID - "未初始化的常量Rack :: OpenID"

所以我按照railscast教程(http://railscasts.com/episodes/170-openid-with-authlogic)使用了Ryan的git文件中的旧版插件.我现在可以使用OpenID(Google)成功创建/注册用户,但我无法使用此用户登录.当我提交已注册的OpenID时,我得到"未初始化的常量Rack :: OpenID".有任何想法吗?

谢谢!

openid ruby-on-rails authlogic ruby-1.9

5
推荐指数
1
解决办法
324
查看次数

Scheme中的多维向量?

我之前问了一个关于方案中数组的问题(结果是它们被称为向量,但基本上与你期望的相同).

有没有一种简单的方法可以在PLT Scheme中进行多维数组向量?为了我的目的,我想要一个叫做make-multid-vector或者什么的程序.

顺便说一下,如果这还不存在,我不需要一个完整的代码示例来说明如何实现它.如果我必须自己滚动,我会欣赏一些大方向.我可能这样做的方法是迭代矢量当前最高维度的每个元素以添加另一个维度,但我可以看到使用scheme的递归设置有点难看.

此外,这似乎是我应该能够找到自己的东西,所以请知道我确实谷歌它并没有出现.

scheme vector racket

6
推荐指数
1
解决办法
2022
查看次数

如何在intelliJ IDEA的注释行中的版权文本上方插入一个空行?

我正在使用intelliJ IDEA 9.

它具有创建版权配置文件的功能,并适用于我创建的所有文件.我要做的是格式化版权评论.

假设我有这样的版权文本:Copyright(c)2010 my.company.版权所有.

我希望它自动插入文件中,如下所示:

////////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2010 my.company. All rights reserved.
//
////////////////////////////////////////////////////////////////////////////////
Run Code Online (Sandbox Code Playgroud)

但是当我输入"Copyright(c)2010 my.company.保留所有权利"这一行时.在版权配置文件(没有引号)和配置格式以使用行注释和边框等,我只能使其显示如下:

////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2010 my.company. All rights reserved.
////////////////////////////////////////////////////////////////////////////////
Run Code Online (Sandbox Code Playgroud)

即使我将带有空白行的版权文本放在模板的上方和下方,如下所示,它仍然如上所述.


    Copyright (c) 2010 my.company. All rights reserved.

它似乎忽略了版权模板中的空白行.有没有办法配置它,以便版权文本在评论中的上方和下方有空行?

java intellij-idea copyright-display

3
推荐指数
1
解决办法
1303
查看次数

清理Perl代码:my $ export = $ doc; $ export = ~s:\.odt:\.pdf:;

Perl代码片段:

my $export = $doc;
$export =~ s:\.odt:\.pdf:;
Run Code Online (Sandbox Code Playgroud)

怎么会写得更干净?不仅仅是其他900种编写方式TMTOWTDI.

regex perl code-cleanup

1
推荐指数
2
解决办法
321
查看次数

Apache HttpClient摘要式身份验证

基本上我需要做的是执行摘要式身份验证.我尝试的第一件事是这里提供的官方示例.但是当我尝试执行它时(通过一些小的更改,Post而不是Get方法)我得到了一个

org.apache.http.auth.MalformedChallengeException: missing nonce in challange
at org.apache.http.impl.auth.DigestScheme.processChallenge(DigestScheme.java:132)
Run Code Online (Sandbox Code Playgroud)

当这次失败时我尝试使用:

DefaultHttpClient client = new DefaultHttpClient();
client.getCredentialsProvider().setCredentials(new AuthScope(null, -1, null), new UsernamePasswordCredentials("<username>", "<password>"));

HttpPost post = new HttpPost(URI.create("http://<someaddress>"));
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("domain", "<username>"));
post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

DigestScheme digestAuth = new DigestScheme();
digestAuth.overrideParamter("algorithm", "MD5");
digestAuth.overrideParamter("realm", "http://<someaddress>");
digestAuth.overrideParamter("nonce", Long.toString(new Random().nextLong(), 36));
digestAuth.overrideParamter("qop", "auth");
digestAuth.overrideParamter("nc", "0");
digestAuth.overrideParamter("cnonce", DigestScheme.createCnonce());

Header auth = digestAuth.authenticate(new
      UsernamePasswordCredentials("<username>", "<password>"), post);
System.out.println(auth.getName());
System.out.println(auth.getValue());
post.setHeader(auth);


HttpResponse ret = client.execute(post);
ByteArrayOutputStream v2 = new ByteArrayOutputStream();
ret.getEntity().writeTo(v2);
System.out.println("----------------------------------------");
System.out.println(v2.toString()); …
Run Code Online (Sandbox Code Playgroud)

java android digest-authentication apache-commons-httpclient

14
推荐指数
2
解决办法
2万
查看次数

稳定的随机颜色算法

在这里,我们有一个有趣的真实算法要求涉及颜色.

  1. N 漂亮的颜色:为了绘制漂亮的图表(即:饼图),我们需要选择一组随机的N颜色,这些颜色"足够不同"并且看起来很好.这可以通过固定亮度和饱和度并逐步调整色调来实现360/N.
  2. 稳定的颜色分配:给定Pie_1带扇区标记('A','B','C')和Pie_2带扇区标记('B','C','D'),如果扇区的颜色会很好Pie_1和Pie_2上的B和C相同.如果扇区被移除或随着时间的推移添加到图表中,这将有助于防止混淆.标签是唯一稳定的东西.
  3. 允许硬编码颜色:算法应允许硬编码标签 - >颜色关系作为输入,但会为其余标签计算颜色(根据规则1和2).

我认为这个算法即使看起来很特别,也会在不止一种情况下发挥作用.

有任何想法吗?

更新: Eric是正确的,因为当新标签出现和消失时,不可能保证每个标签的颜色稳定性.但我很高兴它是否"足够稳定",即颜色变化最小化.

我想的是:

  1. 每个标签使用散列(标签)%360获得随机色调值
  2. 为了保证生成的色调足够不同,我们将色调圆以固定的步长(即:)划分,2*N并尝试将先前的色调值"舍入"到新的差异值.
  3. 在不同标签达到相同的圆形色调值的情况下,我们以某种方式打破关系并将点移动到其他位置.

但这留下了硬编码颜色的问题.

algorithm rgb gdi colors hsv

5
推荐指数
1
解决办法
2221
查看次数

是否可以获取在 SQL Server 上运行的应用程序的客户端进程 ID?

对于我的 VFP 应用程序,我有一个程序来检查当前谁正在访问服务器(通过使用 sp_who2),还有另一个程序来检查谁当前正在锁定哪个表。

但我想知道我的用户目前正在访问哪些选项。我在想是否可以编写一个 SP 来获取特定客户端的当前连接进程 ID,并在用户加载程序期间将程序名称插入到 SQL 中的表(ActLog)中。并在用户卸载程序时删除该特定记录。

然后从 ActLog,我可以知道谁正在访问哪个程序。目前,我想知道我是否能够获得客户端进程 ID?

rgds/安德里亚

sql-server visual-foxpro

6
推荐指数
1
解决办法
7235
查看次数

"变量跟踪"正在吃我的编译时间!

我有一个自动生成的文件,看起来像这样......

static void do_SomeFunc1(void* parameter)
{
    // Do stuff.
}

// Continues on for another 4000 functions...

void dispatch(int id, void* parameter)
{
    switch(id)
    {
        case ::SomeClass1::id: return do_SomeFunc1(parameter);
        case ::SomeClass2::id: return do_SomeFunc2(parameter);
        // This continues for the next 4000 cases...
    }
}
Run Code Online (Sandbox Code Playgroud)

当我像这样构建它时,构建时间是巨大的.如果我使用我的脚本将所有函数自动内联到各自的情况中,则构建时间减少一半.GCC 4.5.0表示当我使用-ftime-report时,大约50%的构建时间被"变量跟踪"占用.这意味着什么?如何在保持从交换机中拔出功能的优越缓存局部性的同时加快编译速度?

编辑:有趣的是,构建时间仅在调试版本上爆炸,根据整个项目的以下分析信息(这不仅仅是有问题的文件,但仍然是一个很好的指标;有问题的文件需要花费最多的时间建立):

  • 调试:8分50秒
  • 发布:4分25秒

如果你很好奇,这里有一些示例do_func,删除了上下文.如您所见,我将问题定义简化为仅显示相关部分.如果您想知道,所有self-> func调用都是对boost :: signal的调用.

static void do_Match_Login(Registry* self, const uint8_t* parameters, uint16_t length)
{
    const uint8_t* paramPtr = parameters;

    std::string p0 = extract_string(parameters, &paramPtr, length);
    std::string p1 = extract_string(parameters, &paramPtr, length); …
Run Code Online (Sandbox Code Playgroud)

c++ optimization gcc build-time

7
推荐指数
1
解决办法
2853
查看次数