2016-09-03 1 views
0

Недавно был обновлен до нового компьютера с 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 не кажется эффективным.

Большое спасибо заранее!

+0

1. Проверьте длл на машину 2. режиме выпуска разработки использования, так как функция подписи отличается 3.Check это: Excel является x64 и длл x86? или Excel - x86, а dll - x64? – neohope

ответ

0

Поскольку машина новая, поэтому я перезагружаю ее, удаляя все данные. Затем я установил Office 2016 64bit и VS Community 2015 с нуля и снова построил 64-битную dll. На этот раз ошибка Ошибка выполнения «453» Не удается найти точку входа DLL. Невозможно найти очевидную пропущенную зависимую dll либо dumpbin.exe/dependents, либо depend.exe.

0

Try изменение конфигурации сборки из «Debug» на «Release»

+0

А также убедитесь, что у вас vsruntime140.dll в папке SysWow64 – user7856785