cdecl

    4热度

    4回答

    我的解决方案有一个非托管的C++ DLL,它导出一个函数,以及一个PInvokes这个函数的托管应用程序。 我刚刚将.NET 3.5的解决方案转换为.NET 4.0,并得到了这个PInvokeStackImpalance “调用PInvoke函数时出现了不均衡堆栈”异常。事实证明,我打电话__cdecl'ed功能,因为它是__stdcall: C++部分(被叫): __declspec(dllex

    1热度

    1回答

    我用G ++编写64位操作系统的cdecl,和我有一个可变参数函数,如: void DbgPrint(const char *fmt, ...); 其行为应该挺喜欢的printf。 这里的问题是g ++遵循System V ABI,因此它传递RDI,RSI,RDX,RCX,R8,R9中的第一个参数,然后将剩余的(如果有的话)压入堆栈。 将旧的stdarg.h宏va_start,va_arg等与

    0热度

    1回答

    测试cdecl调用约定,但它是关于这一点困惑: 原来的C代码: int __attribute__((cdecl)) add(int a,int b) { int i; i = a+b; return i; } void __attribute__((cdecl)) print(int i, ...) { int j,a,b;

    4热度

    3回答

    我有一些程序集例程由C函数调用并从中获取参数。现在,我假设这些参数是以cdecl顺序在堆栈上传递的。这是一个公平的假设吗? 编译器(GCC)会检测到这一点,并确保参数传递正确,或者我应该手动去声明它们的cdecl?如果是这样,如果我指定更高的优化级别,该属性是否仍然有效?

    2热度

    1回答

    我正在使用OpenCV库,Boost库和我从这个LINK下载的一段代码编写应用程序。我已创建了Thunk32相同的解决方案下的一个项目,我有以下文件: MainProject.cpp #include "stdafx.h" int main(int argc, char** argv) { IplImage *img = cvLoadImage("C:/Users/Nicolas/

    2热度

    1回答

    如何将C main函数的参数传递给汇编函数?我知道我的自定义函数必须看起来像: void function(char *somedata) __attribute__((cdecl)); 现在我将如何在装配文件中使用somedata。我的操作系统是Linux Ubuntu,我的处理器是x86。

    5热度

    3回答

    为什么Foo()成功,但Bar()会抛出BadImageFormatException? using System.Runtime.InteropServices; using System.Text; static class Program { [DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cde

    1热度

    1回答

    我有两个问题: 是用于stdcall调用总是 4字节的堆栈对准,或者是它4为32位机和8为一个64位的机? cdecl的栈对齐大小是多少? 我使用Microsoft Visual Studio 2010

    3热度

    2回答

    之前预期的初始化我有cdecl调用约定一个问题: void Test1(char* str, ...) // ok {} void cdecl Test2(char* str, ...) // error: expected initializer before 'Test2' {} int main() {} 我应该怎么做才能让编译器识别cdecl调用约定? 谢谢! 平台

    6热度

    1回答

    我有一个弯路问题。众所周知,Detours只能在5个字节的空间中移动(即'jmp'调用和4个字节的地址)。正因为如此,在一个类(方法)中不可能有'钩子'函数,所以你不能提供'this'指针,因为没有足够的空间(here's这个问题更加彻底的解释)。所以我一整天都在为解决方案进行头脑风暴,现在我想要关于这个问题的想法,所以我不开始一个3-5天的项目,不知道它是否可行。我想让'钩子'函数成为类方法,我