![]() |
|
![]() ![]() ![]() |
|
stic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.7.2006 Репутация: нет Всего: нет |
Здравствуйте.
У меня проблемы при создании dll в Visual Studio .Net ( создание: VC++ Win32 project а Application settings - DLL ). //XDll.cpp #include "stdafx.h" #include "XDll.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } __declspec(dllexport) int getSum( int n1, int n2) { return n1 + n2; } //XDll.h extern "C" __declspec(dllexport) int getSum(int n1, int n2); DLL делаю для MS EXCEL (VBA) – так поставлена задача. Через Tool а References… не подключается. Через объявление: Private Declare Function getSum Lib "C:\Excel\XDll.dll" (ByVal x As Integer, ByVal y As Integer) As Integer ------------------------------------------------------------------------------------------------------- Private Sub CommandButton1_Click() Lab1.Caption = getSum(CInt(TextBox1.Text), CInt(TextBox2.Text)) ‘тут выдает ошибку «Run-time error ’49’: Bad DLL calling convention» End Sub Это мой первый эксперимент с dll. Подскажите где протупил ![]() Заранее спасибо за ответы. |
|||
|
||||
vvpC |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 20.5.2006 Где: Москва Репутация: нет Всего: нет |
||||
|
||||
stic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.7.2006 Репутация: нет Всего: нет |
Я попробовал с изменением типов, но увы тоже самое
![]() «Run-time error ’49’: Bad DLL calling convention» ![]() |
|||
|
||||
stic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 26.7.2006 Репутация: нет Всего: нет |
Все таки создал DLL на C++ Builder 6.0, а так же и тестовое приложение к нему тоже на C++ Builder 6.0. DLL работает. Начал подключать к MS Excel через:
Private Declare Function Message Lib " C:\Project\mydll.dll " (x As Long, y As Long) As Long Возникает ошибка: Can’t find DLL entry point Message in C:\Project\mydll.dll Может в функцию DllEntryPoint (точка входа в DLL) нужно добавить чета. int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } Я пробовал и оптимизацию с VC++: BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved) { return 1; } Посоветуйте решение. Заранее спасибо за ответы. |
|||
|
||||
Alexei |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 20.8.2003 Репутация: нет Всего: 4 |
Я не очень-то программист, но пару лет назад игрался с ВБ и ВС даже с массивами.
Помню, там была одна заморочка. Надо было запускать dumpbin и находить точку входа. Там будет, что-то типа: _getSum@* , а в деф файле надо написать: EXPORTS getSum = _getSum@* |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |