2014-11-14 47 views
0

我尝试使用P/Invoke将示例.net应用程序转换为带有JSIL的javascript。JSIL和DllImport

C#代码:

[DllImport("JSTestLib", EntryPoint = "Get42", CallingConvention = CallingConvention.Cdecl)] 
public unsafe static extern int Get42(); 

生成的JavaScript:

$.ExternalMethod({Static:true , Public:true }, "Get42", 
    JSIL.MethodSignature.Return($.Int32) 
); 

我应该在哪里添加执行JavaScript中的Get42方法吗?我应该在JSIL中手动注册这个方法吗?

我只有现在一个错误:

外部方法类型的 'System.Int32 Get42()' 'Test.Program' 已经 没有得到执行。

+0

jsil转换为JavaScript仅MSIL命令,但是当您使用的P/Invoke,MSIL不包含外部函数代码,所以JSIL变换只声明 – Grundy 2014-11-14 20:02:06

+0

我知道,那只是声明。我不知道我必须在哪里实施。 – 2014-11-14 20:10:50

+0

如果你有实现,为什么使用extern?只需添加实现给你的功能,你也可以看到[verbatim javascript](http://jsil.org/#samples/verbatim.html) – Grundy 2014-11-14 20:45:52

回答

1

只需使用JSIL.ImplementExternals - 看看JSIL.Core.js的例子