Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C在Win 8.1脉轮中执行JS的一个失败的最小示例#_C#_Javascript_Chakra - Fatal编程技术网

C# 用C在Win 8.1脉轮中执行JS的一个失败的最小示例#

C# 用C在Win 8.1脉轮中执行JS的一个失败的最小示例#,c#,javascript,chakra,C#,Javascript,Chakra,我试图通过以下代码执行一小段JS(使用MSDN中Chakra主机示例中的本机类): 问题是它返回一个“ScriptCompile”错误,没有我能够发现的额外细节 有人能透露我错过了什么/做了什么/困惑了什么吗?我修改了我的Native.throwiferor的实现,以便在脚本编译错误的情况下,从errorObject中获取一些值。像这样: var message = errorObject .GetProperty("message") .ToString(); var sour

我试图通过以下代码执行一小段JS(使用MSDN中Chakra主机示例中的本机类):

问题是它返回一个“ScriptCompile”错误,没有我能够发现的额外细节


有人能透露我错过了什么/做了什么/困惑了什么吗?

我修改了我的
Native.throwiferor的实现,以便在脚本编译错误的情况下,从errorObject中获取一些值。像这样:

var message = errorObject
    .GetProperty("message")
    .ToString();
var source = errorObject
    .GetProperty("source")
    .ToString();
var line = (int)errorObject
    .GetProperty("line")
    .ToDouble();
var column = (int)errorObject
    .GetProperty("column")
    .ToDouble();
var length = (int)errorObject
    .GetProperty("length")
    .ToDouble();

throw new JavaScriptParseException(error, message, source, line, column, length);

这至少可以为您提供更多信息。

我修改了我的
Native.throwiferor的实现,以便在出现ScriptCompile错误的情况下,从errorObject中获取一些值。像这样:

var message = errorObject
    .GetProperty("message")
    .ToString();
var source = errorObject
    .GetProperty("source")
    .ToString();
var line = (int)errorObject
    .GetProperty("line")
    .ToDouble();
var column = (int)errorObject
    .GetProperty("column")
    .ToDouble();
var length = (int)errorObject
    .GetProperty("length")
    .ToDouble();

throw new JavaScriptParseException(error, message, source, line, column, length);

这至少会让你得到更多的信息。

我怀疑你还在努力解决这个问题。。。但我还是找到了答案

如果查看jsrt.h,您将看到所有本机函数在使用字符串参数时都使用wchar\u t,但是DllImport属性没有指定字符集,因此它默认为ANSI

我在Native.cs文件中进行了查找/替换,并将所有DllImport属性更改为

[DllImport(“jscript.dll”,CharSet=CharSet.Unicode)]


。。。现在我的代码运行良好。我已经向GitHub上的示例所有者发送了一个请求,以修复此问题。更新目前在我的文件夹中,我怀疑你是否还在努力解决这个问题。。。但我还是找到了答案

如果查看jsrt.h,您将看到所有本机函数在使用字符串参数时都使用wchar\u t,但是DllImport属性没有指定字符集,因此它默认为ANSI

我在Native.cs文件中进行了查找/替换,并将所有DllImport属性更改为

[DllImport(“jscript.dll”,CharSet=CharSet.Unicode)]


。。。现在我的代码运行良好。我已经向GitHub上的示例所有者发送了一个请求,以修复此问题。更新当前位于my fork中的

尝试将其添加到您的
AssemblyInfo.cs
文件中:

[module: DefaultCharSet(CharSet.Unicode)]

尝试将其添加到您的
AssemblyInfo.cs
文件:

[module: DefaultCharSet(CharSet.Unicode)]

我尝试通过替换C#sample的主要方法来编译它,结果在我的机器上运行良好。我会尝试下面贾斯汀的代码,看看你是否可以获得更多关于错误的详细信息,以找出问题所在。你是否尝试将其作为STA线程运行?我不确定这是否有必要。我尝试通过替换C#sample的主要方法来编译它,结果在我的机器上运行良好。我会尝试下面贾斯汀的代码,看看你是否可以获得更多关于错误的详细信息,以找出问题所在。你是否尝试将其作为STA线程运行?我不确定这是否必要。