Лучший отвечающий
Неразрешенный внешний символ C++/ VS 2017

Вопрос
-
Делаю все по сайту Создание расширения C++ для Python.
В части "Преобразование проекта С++ в расширение для Python"не могу собрать проект, тк ошибки: LNK2001 у __imp__PyFloat_FromDouble, __imp__PyFloat_AsDouble, __imp__PyModule_Create2. И в итоге ошибка LNK1120.
Помогите разобраться с ошибкой!
Вот код:#include <Python.h> #include <Windows.h> #include <cmath> const double e = 2.7182818284590452353602874713527; double sinh_impl(double x) { return (1 - pow(e, (-2 * x))) / (2 * pow(e, -x)); } double cosh_impl(double x) { return (1 + pow(e, (-2 * x))) / (2 * pow(e, -x)); } //double tanh_impl(double x) { // return sinh_impl(x) / cosh_impl(x); //} PyObject* tanh_impl(PyObject *, PyObject* o) { double x = PyFloat_AsDouble(o); double tanh_x = sinh_impl(x) / cosh_impl(x); return PyFloat_FromDouble(tanh_x); } static PyMethodDef superfastcode_methods[] = { // The first property is the name exposed to python, the second is the C++ function name { "fast_tanh", (PyCFunction)tanh_impl, METH_O, nullptr }, // Terminate the array with an object containing nulls. { nullptr, nullptr, 0, nullptr } }; static PyModuleDef TanhBenchmark_module = { PyModuleDef_HEAD_INIT, "TanhBenchmark", // Module name "Provides some functions, but faster", // Module description 0, superfastcode_methods // Structure that defines the methods }; PyMODINIT_FUNC PyInit_TanhBenchmark() { return PyModule_Create(&TanhBenchmark_module); }
Вот скрин ошибок:
Примечание: В части "Создания основного проекта С++" в пункте 7 предположительно две ошибки:
1. Забыли указать тип принимаемого аргумента "х". Я написал double x.
2. При исправлении этой ошибки возникает другая: С2169 у tanh. Возможное решение: переименовать tanh в tanh_impl. Ну и так же вместо sinh и cosh напишем sinh_impl и cosh_impl.7 июня 2017 г. 7:05
Ответы
-
Ошибка линкера "Неразрешенный внешний символ" означает, что данный идентификатор импортируется из DLL. Линкеру необходимо указать соответствующий LIB-файл в свойствах проекта: "Компоновщик - Ввод - Дополнительные зависимости" для того чтобы он смог настроить все связи.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Помечено в качестве ответа fryn3 8 июня 2017 г. 10:17
8 июня 2017 г. 9:39
Все ответы
-
Ошибка линкера "Неразрешенный внешний символ" означает, что данный идентификатор импортируется из DLL. Линкеру необходимо указать соответствующий LIB-файл в свойствах проекта: "Компоновщик - Ввод - Дополнительные зависимости" для того чтобы он смог настроить все связи.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Помечено в качестве ответа fryn3 8 июня 2017 г. 10:17
8 июня 2017 г. 9:39 -
а именно Python36.dll -- в моем случаи8 июня 2017 г. 10:18