Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel и подключение DLL 
:(
    Опции темы
stic
  Дата 26.7.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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.  Подскажите где протупил smile Может есть еще какой-то способ создания dll на VC++ (в Visual Studio) и подключить ее в проект VBA? 
Заранее спасибо за ответы.
 
PM MAIL   Вверх
vvpC
Дата 26.7.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 20.5.2006
Где: Москва

Репутация: нет
Всего: нет



сишный int это басюковый long - декларация в васике написана неправильно - везде long надо писать 
а для 
Цитата(stic @  26.7.2006,  12:20 Найти цитируемый пост)
Через Tool а References…
 нужно COM dll делать 

Это сообщение отредактировал(а) vvpC - 26.7.2006, 12:40
PM MAIL WWW   Вверх
stic
Дата 26.7.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.7.2006

Репутация: нет
Всего: нет



Я попробовал с изменением типов, но увы тоже самое  smile 

«Run-time error ’49’: Bad DLL calling convention»          smile  !!!!!!!!!!!!!!!!!!!!!!!!  
PM MAIL   Вверх
stic
  Дата 28.7.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;
}

Посоветуйте решение. 
Заранее спасибо за ответы.
 
PM MAIL   Вверх
Alexei
Дата 4.8.2006, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 20.8.2003

Репутация: нет
Всего: 4



Я не очень-то программист, но пару лет назад игрался с ВБ и ВС даже с массивами.
Помню, там была  одна заморочка.
Надо было запускать dumpbin  и находить точку входа.
Там будет, что-то типа:
_getSum@* , а в деф файле надо написать: EXPORTS getSum = _getSum@*

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1029 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.