我一直在尝试使用Haxe生成C#代码,该代码从用C ++ / CLR编写的dll调用方法。这个dll被称为" AudioClientSDK.dll"
以下是我尝试的Haxe代码示例:
package hello;
class HelloWorld {
static public function main():Void {
var s = untyped __cs__("AudioClientCLR.AudioClientAPI.release()");
}
}
正如你所看到的,我正在使用" Haxe magic"语法(我以前尝试过几乎导致相同问题的Haxe extern类)直接调用AudioClientSDK.dll中的release方法。 dll中的方法签名是:
public : void AudioClientCLR::AudioClientAPI::release()
但是,当我尝试编译此代码时,Haxe会抛出此错误:
haxe -cp src -cs out/CS -main hello.HelloWorld
haxelib run hxcs hxcs_build.txt --haxe-version 3103
c:\git\HelloHaxe\src\hello\HelloWorld.hx(6,16): error CS0103: The name
'AudioClientCLR' does not exist in the current context
Compilation error
Native compilation failed
Error: Build failed
如果我尝试将AudioClientSDK.dll引用作为-net-lib或-net-std传递,则会出现以下错误:
haxe -cp src -cs out/CS -net-lib lib/CPP/x86/AudioClientSDK.dll -main hello.HelloWorld
File "ilMetaReader.ml", line 281, characters 36-42: Assertion failed
error 0x2
haxe -cp src -cs out/CS -net-std lib/CPP/x86/AudioClientSDK.dll -main hello.HelloWorld
Error: No .NET std lib directory with the pattern 'net-20' was found in the -net-std search path. Try updating the hxcs lib to the latest version, or specifying another -net-std path.
你们中的任何人都知道如何正确使用dll吗?
提前致谢。
P.S。这些是AudioClientSDK.dll的一些属性:
另外,请注意,在Visual Studio中C#可以毫无问题地使用此DLL。
答案 0 :(得分:0)
这似乎是一个错误。请尽快向haxe问题列表报告,并提供可下载链接到违规dll,它可能会包含在3.2最终版本中