C++ 的 C# 等效项“有符号长整型”

发布于 2024-10-26 09:22:09 字数 357 浏览 4 评论 0原文

我将 C++ dll 导入到 C# 项目中,在 x64 计算机上,在调试模式下,PInvoke 抱怨托管签名与非托管目标签名不匹配。

C++:

void _Foo(signed long int x);

C#:

[DllImport("foo.dll", EntryPoint="_Foo"]
public static extern void Foo(int x)

将 C# 代码中的 int 替换为 IntPtrInt64 并不能解决问题。 有什么建议吗?

I import a C++ dll into a C# project and, on a x64 machine, on debug mode, PInvoke complains that managed signature does not match the unmanaged target signature.

C++:

void _Foo(signed long int x);

C#:

[DllImport("foo.dll", EntryPoint="_Foo"]
public static extern void Foo(int x)

Replacing int in the C# code with IntPtr or Int64 didn't solve the problem.
Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我是有多爱你 2024-11-02 09:22:09

它是System.Int32。也称为“int”。

It's System.Int32. Also known as "int".

难以启齿的温柔 2024-11-02 09:22:09

C++ 中的 long int == C# 中的 int。两者都是 4 字节长。 C++ 中的 long long == C# 中的 long。 (8 字节)。

正如 Larry 上面所说,如果它发现类型不匹配,那不是因为 int。

A long int in C++ == int in C#. Both are 4 bytes long. A long long in C++ == long in C#. (8 bytes).

As Larry above says, if it is picking up a type mismatch, it is not because of the int.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文