gpt4 book ai didi

c - 在 JSFL 中调用 dll 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:19 24 4
gpt4 key购买 nike

我需要使用 C 创建 dll。但我发现了一些问题。好的,首先:我需要 dll 库中的函数来计算线的角度 - tgA = dy/dx。角度 = arctg(dy/dx)。我在文件 framework.c 中定义了它:

JSBool computeAngle(JSContext *cx, 
JSObject *obj,
unsigned int argc,
jsval *argv,
jsval *rval ) {
double dx, dy, angle;
if (argc != 2) {
return JS_FALSE;
}
if (JS_ValueToDouble(cx, argv[0], &dy) == JS_FALSE ||
JS_ValueToDouble(cx, argv[1], &dx) == JS_FALSE) {
return JS_FALSE;
}
if( dx == 0 ) {
if( dy < 0 ) angle = -90;
else if( dy > 0 ) angle = 90;
else angle = 0;
}else angle = atan(dy/dx)*180/M_PI;
return JS_DoubleToValue(cx, angle, rval);
}

但是这个方法不行!我认为有问题,并从 Adob​​e 站点下载了 Sample.zip。我在我的函数上更改了函数 computeSum,但它仍然不起作用。我认为 JS_ValueToDouble() 和 JS_DoubleToValue 方法有问题。你怎么看?

最佳答案

此方法的哪一部分不起作用?从另一组代码调用 dll 中的方法(例如,您已经编译了 DLL 并创建了一个测试程序,但它抛出了链接器错误),或者您无法编译您的 dll?如果是第一个,您的方法需要定义如下宏:

#ifdef EXPORT
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif

在您的 header 中(或者如果该函数未在 header 中声明,则在 C 文件中),您需要

DLL_EXPORT JSBool computeAngle(JSContext *cx, 
JSObject *obj,
unsigned int argc,
jsval *argv,
jsval *rval )

如果在尝试编译您的 dll 时出现错误,则很有可能您没有正确链接到 dll - 您需要设置项目链接器属性(如果使用 MSVS)或使用 -l 选项(如果使用 MinGW)。

关于c - 在 JSFL 中调用 dll 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2305950/

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