小编MrS*_*ers的帖子

static_cast <Derived*>(Base pointer)是否会产生编译时错误?

static_cast(Base pointer)应该给出编译时错误吗?

class A
{
public:
    A()
    {

    }
};

class B : public  A
{
 public:
     B()
     {
     }
};

int main()
{
    A *a=new A();
    B * b=static_cast<B*>(a);   // Compile Error?
}
Run Code Online (Sandbox Code Playgroud)

c++ casting

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

如何从C#主机应用程序执行Javascript回调函数

我正在C#中创建一个应用程序,它为大多数GUI提供自定义网页.作为主持人,我想提供一个javascript API,以便嵌入式网页可以访问主机应用程序提供的一些服务.

我已经能够使用WebBrowser.ObjectForScripting属性和实现脚本类来获得这个工作的简单案例.这适用于同步javascript调用.但是,主机提供的一些操作是长时间运行的,我想提供在操作完成时回调javascript的能力.这就是我遇到麻烦的地方.

使用Javascript:

function onComplete( result )
{
    alert( result );
}

function start()
{
    window.external.LongRunningProcess( 'data', onComplete );
}
Run Code Online (Sandbox Code Playgroud)

C#:

[ComVisible(true)]
public class ScriptObject
{
    public void LongRunningProcess( string data, <???> callback )
    {
        // do work, call the callback
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript中的'start'功能将整个过程踢掉.我遇到的问题是,回调的类型是什么?我该如何从C#中调用它?

如果我使用字符串类型进行回调,它会编译并运行,但是在LongRunningProcess方法中,回调实际上包含onComplete函数的全部内容(即'function onComplete(result){alert(result)}')

如果我使用对象类型,它将作为COM对象返回.使用Microsoft.VisualBasic.Information.TypeName方法,它返回'JScriptTypeInfo'.但据我所知,这不是一个真正的类型,也没有通过所有MSDN真正提到它.

如果我使用IReflect接口,它运行时没有错误,但是我找不到对象上没有成员,字段或属性.

解决方法是传递回调函数的字符串名称而不是函数本身(即window.external.LongRunningProcess('data','onComplete');).我知道如何按名称执行javascript函数,但我不想在网页中使用该语法,它也不适用于javascript中的内联回调定义.

有任何想法吗?

为了它的价值,我已经让这个系统使用了Chromium Embedded框架,但是我正在努力将代码移植到WebBrowser控件上,以避免重新分配Chromium的大小.但是,正在开发的HTML页面最终将在Linux/Mac OSX上运行,其中可能仍会使用Chromium.

javascript c# callback webbrowser-control

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

重新排序ELF文件节的简单方法

我正在寻找一种简单的方法来重新排序ELF文件部分.我有一系列自定义部分,我希望所有部分按特定顺序对齐.

我发现如何做到这一点的唯一方法是使用链接器脚本.但是,文档指出指定自定义链接描述文件会覆盖默认值.默认的链接描述文件中包含很多内容,我不想在自定义脚本中复制只是为了让三个部分按特定顺序排在一起.对链接器行为进行硬编码似乎不太灵活.

我为什么要这样做?我有一段数据需要知道(开始和结束)的运行时内存位置.所以我创建了两个额外的部分并将sentinel变量放入其中.然后,我想使用这些变量的内存位置来了解内存中未知部分的范围.

.markerA 
    int markerA;
.targetSection
    ... Lots of variables ...
.markerB
    int markerB;
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我知道.targetSection中的数据位于markerA和markerB的地址之间.

还有另一种方法来实现这一目标吗?是否有库可以让我读取当前正在执行的ELF图像并确定部分位置和大小?

linux elf

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

标签 统计

c# ×1

c++ ×1

callback ×1

casting ×1

elf ×1

javascript ×1

linux ×1

webbrowser-control ×1