gpt4 book ai didi

c++ - ZScript 文件执行到 DLL

转载 作者:行者123 更新时间:2023-11-30 16:56:07 25 4
gpt4 key购买 nike

ZBrush 的 ZScript 中,您可以使用 FileExecute 调用 DLL。

[FileExecute,"ZBRUSH_ZData\ZPlugs\WebZPlug.dll",HTTP_Browse,"http://www.zbrushcentral.com"]

从 ZScript 接收参数和数据的 DLL 入口点(C/C++ 函数)签名是什么? ZScript 和 C++ 之间的编码数据结构是否存在任何未记录的参数?

最佳答案

在恢复了一些部分回答这个问题的文档之后:这是完整的 FileExecute 签名:

[FileExecute, Filename, Function to call, Optional text input, Option numeric input, Optional memory block input, Optional memory block output]

您可以传递在 ZScript 中创建的内存块“MemBlock”:

[FileExecute, "DllName.dll", "FunctionName", "StringArgument", [MemGetSize, "MemBlock"], "MemBlock",]

这是 DLL 中的一个 C++ 函数,用于接收来自 ZScript 的调用,以及内存块:

#define DLLEXPORT __declspec(dllexport)

extern "C" int DLLEXPORT FunctionName(unsigned char* message, double number, void* memblock, void* memblock2)
{
int mbSize = (int)number; // the second argument has to be a double

// Read from the memory block via a strstream
stdstrstream mbStream((char*)memblock, mbSize);

// Read the first integer written into the memory block by the ZScript
int val = 0;
mbStream.read((char*)&val, 4);
}

extern "C" 是让 C++ 函数具有“C”链接(编译器不会破坏名称),以便 ZBrush C 代码可以链接到它。

关于c++ - ZScript 文件执行到 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com