ОШИБКА, связанная с API C, C++ и JS: неразрешенная структура внешнего символа... из примера кодаC++

Программы на C++. Форум разработчиков
Ответить
Гость
 ОШИБКА, связанная с API C, C++ и JS: неразрешенная структура внешнего символа... из примера кода

Сообщение Гость »


Adobe Animate позволяет пользователям расширять его функциональность с помощью C или C++. Вы создаете свою .dll и вызываете ее из приложения.
Официальная инструкция находится здесь, текст
Я ожидал, что смогу скопировать и вставить исходный код, скомпилировать его. затем проверьте dll. Пока всё идёт не очень хорошо.
В исходном коде есть ошибки, некоторые я исправил. Их могло бы быть больше, но пока IDE не выдает никаких предупреждений.
При компиляции выдает 2 ошибки, LNK2001 и LNK1120
Консоль вывода такая
Сообщение об ошибке на вкладке «Вывод»
Согласно выводам, проблема в «struct MM_Environment mmEnv».
Я использую VS 2022, ниже приведен код Я работаю.
Вы можете выполнить поиск в разделе «Частные типы данных, макросы и глобальные переменные», он должен привести вас прямо к соответствующей части.
Другая возможность заключается в том, что у меня неправильные настройки в конфигурации, однако это всего лишь предположение, никаких подсказок нет, поэтому я не знаю, что с этим делать.
Если у вас есть идеи или вам нужна дополнительная информация, дайте мне знать. Мои познания в программировании очень ограничены, но я попробую.
Заранее спасибо.

Код: Выделить всё

#ifndef _MM_JSAPI_H_
#define _MM_JSAPI_H_

/*****************************************************************************
* Public data types
****************************************************************************/

typedef struct JSContext JSContext;
typedef struct JSObject JSObject;
#if _WIN64 || __x86_64__
typedef long long jsval;
#else
typedef long jsval;
#endif
#ifndef JSBool
#   if _WIN64 || __x86_64__
typedef long long JSBool;
#   else
typedef long JSBool;
#   endif
#endif

typedef JSBool(*JSNative)(JSContext* cx, JSObject* obj, unsigned int argc,
jsval* argv, jsval* rval);

/* Possible values for JSBool */
#define JS_TRUE 1
#define JS_FALSE 0

/*****************************************************************************
* Public functions
****************************************************************************/

/* JSBool JS_DefineFunction(unsigned short *name, JSNative call, unsigned int nargs) */
#define JS_DefineFunction(n, c, a) \
(mmEnv.defineFunction ? (*(mmEnv.defineFunction))(mmEnv.libObj, n, c, a) \
: JS_FALSE)

/* unsigned short *JS_ValueToString(JSContext *cx, jsval v, unsigned int *pLength) */
#define JS_ValueToString(c, v, l) \
(mmEnv.valueToString  ? (*(mmEnv.valueToString))(c, v, l) : (unsigned short *)0)

/* unsigned char *JS_ValueToBytes(JSContext *cx, jsval v, unsigned int *pLength) */
#define JS_ValueToBytes(c, v, l) \
(mmEnv.valueToBytes  ? (*(mmEnv.valueToBytes))(c, v, l) : (unsigned char *)0)

/* JSBool JS_ValueToInteger(JSContext *cx, jsval v, long *lp); */
#define JS_ValueToInteger(c, v, l) \
(mmEnv.valueToInteger ? (*(mmEnv.valueToInteger))(c, v, l) : JS_FALSE)

/* JSBool JS_ValueToDouble(JSContext *cx, jsval v, double *dp); */
#define JS_ValueToDouble(c, v, d) \
(mmEnv.valueToDouble  ? (*(mmEnv.valueToDouble))(c, v, d) : JS_FALSE)

/* JSBool JS_ValueToBoolean(JSContext *cx, jsval v, JSBool *bp); */
#define JS_ValueToBoolean(c, v, b) \
(mmEnv.valueToBoolean ? (*(mmEnv.valueToBoolean))(c, v, b) : JS_FALSE)

/* JSBool JS_ValueToObject(JSContext *cx, jsval v, JSObject **op); */
#define JS_ValueToObject(c, v, o) \
(mmEnv.valueToObject  ? (*(mmEnv.valueToObject))(c, v, o) : JS_FALSE)

/* JSBool JS_StringToValue(JSContext *cx, unsigned short *bytes, uint sz, jsval *vp); */
#define JS_StringToValue(c, b, s, v) \
(mmEnv.stringToValue  ? (*(mmEnv.stringToValue))(c, b, s, v) : JS_FALSE)

/* JSBool JS_BytesToValue(JSContext *cx, unsigned char *bytes, uint sz, jsval *vp); */
#define JS_BytesToValue(c, b, s, v) \
(mmEnv.bytesToValue  ? (*(mmEnv.bytesToValue))(c, b, s, v) : JS_FALSE)

/* JSBool JS_DoubleToValue(JSContext *cx, double dv, jsval *vp); */
#define JS_DoubleToValue(c, d, v) \
(mmEnv.doubleToValue  ? (*(mmEnv.doubleToValue))(c, d, v) : JS_FALSE)

/* jsval JS_IntegerToValue(long lv); */
#define JS_IntegerToValue(lv)       (((jsval)(lv) 

Источник: [url]https://stackoverflow.com/questions/78155329/c-c-and-jsapi-related-error-unresolve-external-symbol-struct-from-a-sampl[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»