问题列表 - 第17195页

具有重复符号的C++插件库的Segfault

我有一个跨平台的C++应用程序,它被分成几个共享库并从插件共享库中加载其他功能.插件库应该是自包含的,并且在不知道或不依赖于调用应用程序的情况下自行运行.

其中一个插件包含来自主应用程序的复制代码,因此包含与引擎中的代码名称重复的符号名称.(是的,我知道这通常是禁止的,但在插件编写时,引擎是单片二进制文件,无法共享库.)在Windows上,一切运行正常.在Linux上我们得到了段错误.通过查看错误的堆栈跟踪,在调用重复类名中的函数时,它在插件中发生.它似乎是由于引擎和插件具有略微不同版本的共享代码(某些类功能在插件中被注释掉).就好像插件将它的符号运行时链接到引擎而不是它自己.我们通过改变dlopen参数来"修复"这个问题dlopen(pFilepath, RTLD_LAZY | RTLD_LOCAL).

但是当我们重写引擎被拆分为共享库时(为了最终在插件中重用),我们再次得到了段错误.看看堆栈跟踪,它来自引擎 - >插件 - >引擎.

有没有办法指定运行时链接器不将插件的符号映射到引擎(特别是如果它们在插件中定义)?

谢谢!马特


编辑2009-12-3

我首先尝试将插件的代码包装在它自己的命名空间中.这不起作用,因为它静态链接到也链接到引擎的库.静态库的版本不同,所以段错误!

然后我改变了引擎的构建,它的库是静态链接的.当我运行它时,我不再有问题.因此,它似乎是导出共享库符号然后在打开时动态重定位到插件中的结果.但是当所有引擎的代码都在一个可执行文件中时,它不会导出其符号(因此它不会尝试将插件的符号重定位到引擎中).

我仍然有一个问题,因为有一个并行版本的程序(使用Open-MPI),仍然会得到段错误.它似乎仍在导出引擎的符号并重新定位插件.这可能与Open-MPI如何执行应用程序有关.

是否有任何链接器标志可以在插件共享库上使用,它会告诉它不要在运行时动态重定位符号?或者隐藏它的符号,以便它们不被重新定位?我试过-s("省略所有符号信息"),但显然没有改变动态符号(使用检查nm -D <plugin>).

c++ linker gcc runtime shared-libraries

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

使用jquery取消选中radiobutton列表

好的,今天的最后一个问题我保证!

我有以下代码行,其中包含单选按钮列表(radTopx)

ddlBuyer.Attributes.Add("onclick", "$('#tbxProdAC').val(''); $('#txtbxHowMany').val(''); $('#GridView1').remove(); $('#radTopx').attr('checked',false); ");

我想要实现的是,当点击ddlBuyer时,radTopx的所有单选按钮都没有被选中.

我显然目前做错了,请有人指出我哪里出错了?这在单选按钮列表中与标准单选按钮的工作方式不同吗?

#radTopx表示以下单选按钮列表:

RadioButtonList ID="radTopx"

    ListItem>UUF1<ListItem>
    ListItem>UUF2<ListItem>
    ListItem>UUF3<ListItem>
Run Code Online (Sandbox Code Playgroud)

RadioButtonList

jquery radiobuttonlist

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

改变tr背景颜色

我有这样的事情:

<tr id='<%=currentRow %>' onclick="SetBackgroundColor(this)" style="background-color:Yellow">
Run Code Online (Sandbox Code Playgroud)

当我点击一行我想改变它的背景颜色,我喜欢这样:

function SetBackgroundColor(rowId) 
{
     $(rowId).css("background-color", "#000000");
}
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么它不起作用.有什么建议吗?

css jquery

17
推荐指数
3
解决办法
9万
查看次数

Django:在添加之前检查对象是否已存在

这是一个非常简单的Django问题,但我在Django文档中找不到答案,尽管有很多狩猎!

如何检查对象是否已经存在,并且只添加它,如果它存在?

这是代码 - 如果已经存在,我不想在数据库中添加两次follow_role.我该如何先检查?使用get()可能 - 但是如果get()没有返回任何内容,那么Django会抱怨吗?

current_user = request.user
follow_role = UserToUserRole(from_user=current_user, to_user=user, role='follow')
follow_role.save()
Run Code Online (Sandbox Code Playgroud)

谢谢!

python django

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

Grails - 架构配置

如何配置Grails(在DataSource.groovy文件中)以使用给定用户名有权访问的特定架构,但它不一定是该用户的默认架构.

谢谢

grails datasource

4
推荐指数
1
解决办法
2390
查看次数

Kohana 3:使用可维护的路线

我正在使用Kohana v3进行网络项目,今天我发现自己写了这个:

echo Html::anchor('user/view/'.$user->id, "See user's profile");
Run Code Online (Sandbox Code Playgroud)

如果我action_view在用户控制器中重命名该方法,链接将被破坏.为了避免这种情况,我在User模型中创建了一个函数,该函数返回用于查看用户配置文件的URL:

echo Html::anchor($user->url_view(), "See user's profile");
Run Code Online (Sandbox Code Playgroud)

还有另一种(更干净的)方法(类似于Django url(){% url %})?

PS:请原谅我的英语.

php kohana

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

如何在Python中获取unicode月份名称?

我想获得一个unicode版本calendar.month_abbr[6].如果我没有为语言环境指定编码,我不知道如何将字符串转换为unicode.下面的示例代码显示了我的问题:

>>> import locale
>>> import calendar
>>> locale.setlocale(locale.LC_ALL, ("ru_RU"))
'ru_RU'
>>> print repr(calendar.month_abbr[6])
'\xb8\xee\xdd'
>>> print repr(calendar.month_abbr[6].decode("utf8"))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.5/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb8 in position 0: unexpected code byte
>>> locale.setlocale(locale.LC_ALL, ("ru_RU", "utf8"))
'ru_RU.UTF8'
>>> print repr(calendar.month_abbr[6])
'\xd0\x98\xd1\x8e\xd0\xbd'
>>> print repr(calendar.month_abbr[6].decode("utf8"))
u'\u0418\u044e\u043d'
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?解决方案不必看起来像这样.任何给我在unicode中缩写月份名称的解决方案都很好.

python unicode

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

这个CREATE TABLE语句有什么问题?

CREATE TABLE findings (
  ident VARCHAR(28), 
  code VARCHAR(8), 
  when DATETIME, 
  ip VARCHAR(15)
);
Run Code Online (Sandbox Code Playgroud)

mysql

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

Bash Scripting"[!:not found"错误,以及如何编写或声明

编辑:这是我更新的代码:

#!/bin/sh
files=`ls`
if [ $# -ne 1 -o -f $1 ]
then
        echo "Usage: $0 <directory>"
        exit 1
fi
if [ ! -e $1 ]
then
        echo "$1 not found"
        exit 1

elif [ -d $1 ]
then
cd $1

for f in $files
do
        if [ ! -d "$f" ]
        then
           if [ ! -s "$f" ]
            then
              rm -r "$f"
        echo "File: $f was removed."
        else
        continue
        fi
fi
done


echo "Name\t\tLinks\t\tOwner\t\tDate"

for f in $files
        do …
Run Code Online (Sandbox Code Playgroud)

unix bash scripting syntax-error

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

在XAML中嵌入System.String

有没有办法在XAML中嵌入一个字符串,给它和ID,以后再引用它.

我试过了:

    <Window x:Class="WpfApp1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:System="clr-namespace:System;assembly=mscorlib"
        Title="Window1" Height="300" Width="500">
        <Grid>
            <System:String>Test</System:String>
        </Grid>
    </Window>
Run Code Online (Sandbox Code Playgroud)

并获得错误:
无法将"String"类型的实例添加到"UIElementCollection"类型的集合中.仅允许"UIElement"类型的项目.

如果我将字符串嵌套在XAML中的其他位置,我可以这样做吗?或者在非UI元素中?然后我只给它一个Name属性?

.net silverlight wpf xaml

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