标签: language-interoperability

访问C联合字段时出现问题

我想进入Go的C联盟领域.下面是我的源代码,但编译时遇到错误:

package main

// #include <stdio.h>
// #include <stdlib.h>
// union bar {
//        char   c;
//        int    i;
//        double d;
// };
import "C"

import "fmt"

func main() {
    var b *C.union_bar = new(C.union_bar)
    b.c = 4
    fmt.Println(b)
}
Run Code Online (Sandbox Code Playgroud)

当我建立时,我得到如下错误:

bc undefined(类型*[8]字节没有字段或方法c)

谁能告诉我访问工会领域的正确方法?

language-interoperability go cgo

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

为什么Scala偶尔会回退到Java对象?

我几乎可以肯定以前曾经问过这个问题,但是我错过了找到它的正确的话.

scala> Seq[Any]( 3, 3.4 )
res0: Seq[Any] = List(3, 3.4)

scala> res0( 1 ).getClass
res1: Class[_] = class java.lang.Double

scala> Seq( 3, 3.4 )
res2: Seq[Double] = List(3.0, 3.4)

scala> res2( 1 ).getClass
res3: Class[Double] = double
Run Code Online (Sandbox Code Playgroud)

为什么斯卡拉处理我的Double输入作为java.lang.DoubleSeq[Any],但保持它作为scala.Double一个工作的时候Seq[AnyRef]?有没有办法防止这种行为,而是总是使用Scala类型?

java scala language-interoperability

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

尝试从C#调用C++ DLL时格式不正确异常

我正在使用C#WPF.
我有一个C++测试dll如下:
.h:

extern "C" __delspec(dllexport) void TestMethod();
Run Code Online (Sandbox Code Playgroud)

.cpp文件:

extern "C"
{
    __delspec(dllexport) void TestMethod()
    {
        MessageBox(0, L"Test", L"Test", MB_ICONINFORMATION);
    }
}
Run Code Online (Sandbox Code Playgroud)

C#代码:

[DllImport("DllTest.dll", EntryPoint = "TestMethod")]
public static extern void TestMethod();
Run Code Online (Sandbox Code Playgroud)

当我试图调用TestMethod时,我得到了异常:

an attempt was made to load a program with an incorrect format
Run Code Online (Sandbox Code Playgroud)

我做错了什么?
谢谢!


c# c++ wpf language-interoperability

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

目标 c 超类中的受保护变量在 swift 子类中不可访问

@interface MyObjectiveCmainClass
{
@protected
    NSMutableArray* thisStringIsInaccessibleInSwiftSubclasses;//this I can't access in swift subclass
}
@property NSString* thisStringIsAccessibleInSwiftSubclasses;//this I can access in swift subclass
- (void) thisMethodIsAccessibleInSwiftSubclasses;//this too I can access in Swift subclass
@end
Run Code Online (Sandbox Code Playgroud)
class MySwiftSubclass : MyObjectiveCmainClass {
    
      override func thisMethodIsAccessibleInSwiftSubclasses() {
         NSLog(self.thisStringIsAccessibleInSwiftSubclasses)
    }
}

Run Code Online (Sandbox Code Playgroud)

知道为什么我无法访问我的 ObjectiveC 实例变量上的 @protected 属性吗?

xcode objective-c language-interoperability ios swift

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

是否有Fortran“双精度”与C“双精度”不同的平台?

为了与C程序实现互操作性,Fortran标准的2003年修订版引入了一个模块iso_c_binding,该模块允许编写以下内容:

USE iso_c_binding, ONLY: c_int, c_float
INTEGER(KIND=c_int) :: x
REAL(KIND=c_float) :: y
Run Code Online (Sandbox Code Playgroud)

保证可以在C端精确映射到a int x和a float y。现在对于整数,这是至关重要的,因为默认INTEGER类型(取决于编译器和平台)可以很好地包装为64位整数类型,即使int是32位。

但是,对于浮点类型,以下映射似乎是不可避免的:

REAL*4  (or)  REAL               ->  float
REAL*8  (or)  DOUBLE PRECISION   ->  double
Run Code Online (Sandbox Code Playgroud)

因此,这里的问题:是否有任何实际的平台或编译器在哪里,这是没有满足,例如,在那里sizeof(REAL*4) != sizeof(float)

c fortran language-interoperability fortran-iso-c-binding

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

C# - F# 互操作性,如何获取结果而不是 FSharpFunc

我正在学习 F#,想编写可以从 C# 应用程序使用的简单 F# 库。对于简单的 F# 函数,它按预期工作,例如

let Square x = x * x
Run Code Online (Sandbox Code Playgroud)

从 C# 我可以使用它并获得预期值:

var sqaredNumber = MyFSharpLibrary.Square(5);
Run Code Online (Sandbox Code Playgroud)

但是,当我使用Sequence/IEnumerable<T>作为函数参数时,我得到的是FSharpFunc对象而不是结果。这是我的功能:

let FilterEvenNumbers input = Seq.filter(fun x -> x % 2 = 0)
Run Code Online (Sandbox Code Playgroud)

这就是我尝试从 C# 代码中使用它的方法:

 var numbers = new int[] { 1, 2, 3, 4 };
 var filteredNumbers = MyFSharpLibrary.FilterEvenNumbers(numbers);
Run Code Online (Sandbox Code Playgroud)

而不是值filteredNumbers包含FSharpFunc对象。我可以在该对象上使用方法Invoke,但想避免额外的复杂性。我怎样才能做到这一点?

c# ienumerable f# language-interoperability sequence

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

HRESULT,DWORD和HANDLE在非托管代码中的含义是什么?

我正在读关于Marshaling的事.我很困惑,因为在非托管代码中这意味着什么.HRESULT,DWORD和HANDLE.原文是:

您已经知道托管和非托管环境之间没有这种兼容性.换句话说,.NET不包含存在于非托管代码领域中的类型HRESULT,DWORD和HANDLE.因此,您需要找到.NET替代品或根据需要创建自己的替代品.这就是所谓的编组.

c# clr unmanaged language-interoperability marshalling

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