Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 14:13   #1
Kverter
 
Регистрация: 06.11.2013
Сообщений: 8
По умолчанию Подключение dll (C++) к проекту VB 6.0

Здравствуйте! Проблемма в подключении ДЛЛ к VB 6.
есть библиотека на C++
Код:
//ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
//#define _UNICODE
#pragma comment( lib, "Activeds.lib" )
#pragma comment( lib, "Adsiid.lib" )
#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;

USES_CONVERSION;
string strDesc = static_cast<CHAR*>(CW2A(bstr));

 string LDAP="LDAP://";
 string path = LDAP + strDesc;  
 wstring wstr( path.begin(), path.end() );


LPCTSTR path2 = W2CT( wstr.c_str( ) );

hr = ADsGetObject( path2, IID_IADs,(void**)&pUsr);

VARIANT var;
VariantInit(&var);
hr = pUsr->Get(CComBSTR("sAMAccountName"), &var );

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);      
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;


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
Код:
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
при запуске просто зависает и все,помогите пожалуйста.

Последний раз редактировалось Stilet; 02.12.2013 в 16:16.
Kverter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение библиотеки к проекту C# vovoch C# (си шарп) 9 19.10.2014 03:14
[Вопрос] Подключение библиотек к проекту. DLL vs LIB Flay Visual C++ 4 14.10.2013 00:53
Подключение файла к проекту..? kta87 Общие вопросы Delphi 3 20.03.2012 18:42
Подключение dll к проекту Zeus_God Помощь студентам 0 06.12.2011 19:34
Подключение dll к проекту в C++ Builder Random12 C++ Builder 4 17.10.2011 15:40