Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kverter
36 / 36 / 16
Регистрация: 30.10.2013
Сообщений: 211
#1

Подключение dll (C++) к проекту VB 6.0 - C++

02.12.2013, 14:10. Просмотров 854. Ответов 1
Метки нет (Все метки)

Здравствуйте! Проблемма в подключении ДЛЛ к VB 6.
есть библиотека на C++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
//ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
//#define _UNICODE
#pragma comment( lib, "Activeds.lib" )
#pragma comment( lib, "Adsiid.lib" )
//#pragma comment( lib , "adsldp.dll" )
//#include <activeds.h>
#include <Iads.h>
#include <Adshlp.h>
#include <winldap.h>
#include <iostream>
#include <atlbase.h>
 #include <windows.h>
   #include <lm.h>
   #include <stdio.h>
#include <Lmcons.h>
#include <string>
#include <atlconv.h>
#include <string.h>
using namespace std;
 
extern "C" __declspec(dllexport) string sAMAccountName ()
{
    HRESULT hr;
    IADsADSystemInfo *pADsys;
BSTR bstr;
CoInitialize(NULL);
 hr = CoCreateInstance(CLSID_ADSystemInfo,
                              NULL,
                              CLSCTX_INPROC_SERVER,
                              IID_IADsADSystemInfo,
                             (void**)&pADsys);
 hr = pADsys->get_UserName(&bstr);
    IADs *pUsr=NULL;
 /*int length = SysStringLen(bstr);        // определяем длину BSTR
wchar_t *myString = new wchar_t[length+1]; // используем "+1" т.к. SysStringLen не учел nul в конце строки
wcscpy_s(myString ,wcslen(myString ), bstr); // копируем, используя безопасную wcscpy_s вместо wcscpy, помеченной как "deprecated"
SysFreeString(bstr); // скопированную уже BSTR-строку теперь можно корректно удалить
*/
 
USES_CONVERSION;
string strDesc = static_cast<CHAR*>(CW2A(bstr));
 
 string LDAP="LDAP://";
 string path = LDAP + strDesc;  
 wstring wstr( path.begin(), path.end() );
// const char *path1 = path.c_str();
 
LPCTSTR path2 = W2CT( wstr.c_str( ) );
 //LPCWSTR path2 = (LPCWSTR)wstr;
hr = ADsGetObject( path2, IID_IADs,(void**)&pUsr);
 
VARIANT var;
VariantInit(&var);
hr = pUsr->Get(CComBSTR("sAMAccountName"), &var );
/*if ( SUCCEEDED(hr) )
{
    printf("sAMAccountName: %S\n", V_BSTR(&var) );
    VariantClear(&var);
} */
//USES_CONVERSION;
 
string s2(W2A(var.bstrVal));
return s2;
}
 
 
extern "C" __declspec(dllexport) VARIANT userPrincipalName ()
{
    HRESULT hr;
    IADsADSystemInfo *pADsys;
BSTR bstr;
CoInitialize(NULL);
 hr = CoCreateInstance(CLSID_ADSystemInfo,
                              NULL,
                              CLSCTX_INPROC_SERVER,
                              IID_IADsADSystemInfo,
                             (void**)&pADsys);
 hr = pADsys->get_UserName(&bstr);
    IADs *pUsr=NULL;
 /*int length = SysStringLen(bstr);        // определяем длину BSTR
wchar_t *myString = new wchar_t[length+1]; // используем "+1" т.к. SysStringLen не учел nul в конце строки
wcscpy_s(myString ,wcslen(myString ), bstr); // копируем, используя безопасную wcscpy_s вместо wcscpy, помеченной как "deprecated"
SysFreeString(bstr); // скопированную уже BSTR-строку теперь можно корректно удалить
*/
 
USES_CONVERSION;
string strDesc = static_cast<CHAR*>(CW2A(bstr));
 
 string LDAP="LDAP://";
 string path = LDAP + strDesc;  
 wstring wstr( path.begin(), path.end() );
// const char *path1 = path.c_str();
 
LPCTSTR path2 = W2CT( wstr.c_str( ) );
 //LPCWSTR path2 = (LPCWSTR)wstr;
hr = ADsGetObject( path2, IID_IADs,(void**)&pUsr);
 
VARIANT userPrincipalName;
VariantInit(&userPrincipalName);
hr = pUsr->Get(CComBSTR("userPrincipalName"), &userPrincipalName );
/*if ( SUCCEEDED(hr) )
{
    printf("userPrincipalName: %S\n", V_BSTR(&userPrincipalName) );
    VariantClear(&userPrincipalName);
} */
return userPrincipalName;
}
extern "C" __declspec(dllexport) VARIANT Group ()
{
    HRESULT hr;
    IADsADSystemInfo *pADsys;
BSTR bstr;
CoInitialize(NULL);
 hr = CoCreateInstance(CLSID_ADSystemInfo,
                              NULL,
                              CLSCTX_INPROC_SERVER,
                              IID_IADsADSystemInfo,
                             (void**)&pADsys);
 hr = pADsys->get_UserName(&bstr);
    IADs *pUsr=NULL;
 /*int length = SysStringLen(bstr);        // определяем длину BSTR
wchar_t *myString = new wchar_t[length+1]; // используем "+1" т.к. SysStringLen не учел nul в конце строки
wcscpy_s(myString ,wcslen(myString ), bstr); // копируем, используя безопасную wcscpy_s вместо wcscpy, помеченной как "deprecated"
SysFreeString(bstr); // скопированную уже BSTR-строку теперь можно корректно удалить
*/
 
USES_CONVERSION;
string strDesc = static_cast<CHAR*>(CW2A(bstr));
 
 string LDAP="LDAP://";
 string path = LDAP + strDesc;  
 wstring wstr( path.begin(), path.end() );
// const char *path1 = path.c_str();
 
LPCTSTR path2 = W2CT( wstr.c_str( ) );
 //LPCWSTR path2 = (LPCWSTR)wstr;
hr = ADsGetObject( path2, IID_IADs,(void**)&pUsr);
 
VARIANT var;
VariantInit(&var);
hr = pUsr->Get(CComBSTR("memberOf"), &var );
return var;
}
extern "C" __declspec(dllexport) void out(VARIANT  var)
{
    HRESULT hr;
    LONG lstart, lend;
    SAFEARRAY *sa = V_ARRAY( &var );
    VARIANT varItem;
 
    // Get the lower and upper bound.
    hr = SafeArrayGetLBound( sa, 1, &lstart );
    hr = SafeArrayGetUBound( sa, 1, &lend );
 
    // Iterate and print the content.
    VariantInit(&varItem);
    printf("Getting service dependencies using IADs :\n");
    for ( long idx=lstart; idx <= lend; idx++ )
    {
        hr = SafeArrayGetElement( sa, &idx, &varItem );
        printf("%S ", V_BSTR(&varItem));
        VariantClear(&varItem);
    }
    printf("\n");
 
    VariantClear(&var);
}
и есть код на vb 6.0
C++
1
2
3
4
5
6
Private Declare Function sAMAccountName Lib "C:\Users\1\Documents\Visual Studio 2012\Projects\ConsoleApplication18\Debug\ConsoleApplication18.dll" () As Integer
 
Private Sub Command1_Click()
Dim s As String
s = sAMAccountName
End Sub
при запуске просто зависает и все,помогите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 14:10
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Подключение dll (C++) к проекту VB 6.0 (C++):

Подключение dll к проекту в среде Dev C++ - C++
Добрый день, Первый день с Dev c++ Мне нужно к проекту подключить dll библиотеку. Как это правильно сделать? Мной сделано следующее:...

Подключение к проекту С++ dll, lib файлов - C++
Всем привет. Возникла необходимость подключения библиотек POCO - Download; POCO - POCO Zip Library; В частичности интересует...

Подключение dll к проекту в visual studio - C++
Доброго дня, тема уже эта конечно избитая на форуме, но так и не смог найти решения под свою конкретную задачу, прочитав все, что...

Подключение dll к проекту на Visual Studio - C++
Привет. Я в этом деле новичок еще не приходилось собирать с нуля проекты с .dll в visual studio 2012 поэтому смутно понимаю с чего нужно...

Подключение dll к проекту из внешней директории - C++
Всем привет. Компилятор: mingw IDE: обычный блокнот + консоль Ситуация: Я создаю несколько мини программ (~200 строк...

Подключение dll на C# к проекту на С++ и вызов функции из неё - C++
Здравствуйте. В программировании откровенно говоря я пока никакой, но возникла экстренная необходимость подключить внешнюю dll, написанную...

1
SatanaXIII
Супер-модератор
Эксперт С++
5688 / 2743 / 258
Регистрация: 01.11.2011
Сообщений: 6,695
Завершенные тесты: 1
02.12.2013, 14:32 #2
Цитата Сообщение от Kverter Посмотреть сообщение
к VB 6
Я правильно понимаю, что VB это Visual Basic? Может вам тогда лучше спросить у людей, разбирающихся в той среде к которой вы подключаете? Или вы хотите делать что-то именно с самой библиотекой?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2013, 14:32
Привет! Вот еще темы с ответами:

Как подключить dll на C# к проекту (dll) на С++ - C++
Подскажите, пожалуйста, как подключить dll на C# к проекту (dll) на С++. В интернете много примеров, где показаны примеры по подключению...

Имлонтирование DLL к проекту - C++
Доброго времени суток форумчане программисты. Подскажите легкий способ имплонтирования dll библиотеки и вызывать из нее функции.

Подключить к проекту на C++ DLL написанный на C# - C++
Здравствуйте. Есть ли возможность подключить к проекту на C++, DLL написанный на C#? Мне нужно из этого DLL несколько функций...

Как подключить dll к проекту? - C++
Ребят помогите пожалуйста, если сможете а то я уже 3 дня долбаюсь чет никак не могу разобраться с этими dll. вот я написал код dll-ки ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru