我正在尝试将func1指针* ir1返回的32位整数传递给func2。 但是似乎在func2中只传递了指针或null?。
System::Call 'mydll.dll::func1(*ir1, i 0x00000000)v'
System::Call 'mydll.dll::func2(ir1)'
答案 0 :(得分:0)
System :: Call函数参数包括3个部分;类型,输入和输出,并且您没有使用输出。 *i
是指针类型,但仍具有单独的输入和输出。
如果您的C代码如下:
void __stdcall func1(int*output, int something) { *output = 1337; }
void __stdcall func2(int input) {}
然后NSIS代码应如下所示:
System::Call 'mydll.dll::func1(*i.r1, i 0x00000000)' ; '.' means no input, the value of the integer the parameter points to is undefined (but probably 0)
System::Call 'mydll.dll::func2(ir1)'
或者如果您还需要向func1提供输入:
System::Call 'mydll.dll::func1(*i 666 r1, i 0x00000000)'
System::Call 'mydll.dll::func2(ir1)'
如果您的C函数是__cdecl而不是__stdcall,那么您必须告诉系统插件:
System::Call 'mydll.dll::func1(*i.r1, i 0x00000000)?c'
System::Call 'mydll.dll::func2(ir1)?c'