Недавно был обновлен до нового компьютера с Win 10 pro, Excel 2016, входящего в состав сообщества Office365, vs2015. Построена очень простая dll vC++ с одной функцией, экспортированной в файл def. Код очень прост, но по-прежнему будет размещаться здесь, чтобы предоставить контент и убедиться, что там нет проблем.Excel 2016 VBA не вызвал вызов vs2015 C++ dll
//also tried __declspec(dllexport) double sumCPP(double a, double b) without .def file
double __stdcall sumCPP(double a, double b)
{
return a + b;
}
'VBA
Public Declare PtrSafe Function sumCpp Lib "C:\MyTestProject\x64\Debug\DllTest.dll" (ByVal a As Double, ByVal b As Double) As Double
Но вызов из VBA приводит к ошибке времени выполнения '48': Файл не найден: C: \ MyTestProject \ x64 \ Debug \ DllTest.dll.
Исходный код более сложного проекта dll может быть создан для exe, который работает нормально, но чья DLL вызвала эту ошибку с исходной ошибкой, вызывающей DLL. Любое предложение, на что смотреть? Я пробовал файл depend.exe со многими предположительно ложными тревогами и дамбами/иждивенцами, но не ясно, как использовать результат. Интересно, связано ли это с некоторыми vs2015, распространяемыми не в системе PATH. Я их не вижу, но еще не пытался их добавить, поскольку их, похоже, слишком много.
Есть ли другой вариант делегирования тяжелых вычислений и сокета TCP/IP, кроме использования vC++ dll? Я не знаю, но могу рассмотреть C#, в то время как python будет предпочтительнее. Поскольку эти функции dll предназначены для многократного вызова в VBA, системный вызов vC++ exe не кажется эффективным.
Большое спасибо заранее!
1. Проверьте длл на машину 2. режиме выпуска разработки использования, так как функция подписи отличается 3.Check это: Excel является x64 и длл x86? или Excel - x86, а dll - x64? – neohope