Первый пост здесь.Я пытаюсь следовать многочисленным учебникам по компиляции DLL C ++ как функции Excel и запуску ее как функции Excel, но не могу заставить ее работать.Я использую 64-разрядную версию Windows 10, 64-разрядную версию Visual Studio Community 2017 и Excel 2016.
Я следовал инструкциям.Я запустил новый проект как «Мастер рабочего стола Windows» и создал пустой проект как DLL.Это мой код ниже.В папке «Исходные файлы» моего проекта есть только эти два файла.
funct.cpp:
double __stdcall squareFxn(double x) {
return x * x;
}
Это мой Def-файл, defFile.def:
LIBRARY "square"
EXPORTS
squareFxn
В свойствах проекта я обязательно установил Платформук x64 в диспетчере конфигурации и добавили «defFile.def» без кавычек в файл определения компоновщика / ввода / модуля.
Отлично скомпилировано.Я поместил в VBA следующее:
Declare PtrSafe Function squareFxn Lib "C:\MyPath\square.dll" (ByVal x As Double) As Double
Когда я отлаживал в Visual Studio и запускал в ячейке Excel:
=squareFxn(5)
Visual Studio говорит, что x - это чрезвычайно малое число(6.234E-310) и функция возвращает ноль.
Другая проблема, с которой я сталкиваюсь, это когда я пытаюсь сделать это как ссылку, с соответствующими изменениями (squareFxn (double & x) в функции.Cpp и ByRef вместо ByVal в объявлении функции VBA), я получаю ошибку доступа для чтения.Я пытался запустить Excel в качестве администратора, но безрезультатно.
Кто-нибудь знает, что здесь происходит?Любая помощь будет принята с благодарностью !!