Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

FreeLibrary -> Invalid pointer operation   Найти похожие ветки 

 
pargo ©   (2006-02-17 14:50) [0]

В проекте тестирую загрузку и выгрузку библиотеки:
var
TestLib:string="TestLib.dll";
Hand:THandle=0;

procedure Test;
begin
Hand:=LoadLibrary(PChar(TestLib));
if Hand<>0 then FreeLibrary(Hand);<----- Invalid pointer operation
end;


Библиотека при згрузке не выполняет никаких действий,
кроме того, что в ней есть функции типа: function SamFunction; external ADVAPI32;
Если в библиотеке не подключен модуль ShareMem, то при FreeLibrary вылетает
с ошибкой: " Invalid pointer operation", а при использовании SareMem этой
ошибки нет. В чем может быть дело ? Как избежать ошибки, не подключая ShareMem ?


 
Игорь Шевченко ©   (2006-02-17 15:11) [1]


> Как избежать ошибки, не подключая ShareMem ?


Не использовать string в параметрах


 
RO   (2006-02-17 15:21) [2]

приведенный код при условии


> Библиотека при згрузке не выполняет никаких действий


не может привести к


FreeLibrary -> Invalid pointer operation


 
pargo ©   (2006-02-17 15:28) [3]

В параметрах используються только LPCSTR и LPCWSTR,
исходя из описаний самих функций


 
pargo ©   (2006-02-17 15:36) [4]

RO   (17.02.06 15:21) [2]
Тем не менее это так.
Кроме импорта функций из AdvApi32, ничего нет.


 
RO   (2006-02-17 15:40) [5]


> В параметрах используються только LPCSTR и LPCWSTR


Какике такие "параметры" ?

В приведенном коде нет ни единого вызова ни единой ф-ции из этой DLL.
Есть только ее загрузка и тут же выгрузка.


 
pargo ©   (2006-02-17 15:47) [6]

RO   (17.02.06 15:40) [5]
Параметры функций, которые TestLib импортирует из AdvApi32


 
Игорь Шевченко ©   (2006-02-17 16:02) [7]

Я надеюсь, для моего телепатора будет сделана поблажка, он и так уже перегрелся.

Код в студию. ВЕСЬ.


 
RO   (2006-02-17 16:15) [8]


> pargo ©   (17.02.06 15:47) [6]
> RO   (17.02.06 15:40) [5]
> Параметры функций, которые TestLib импортирует из AdvApi32


Мало ли кто/что кого/что импортирует !

Если ты не используешь соотв.ссылку, "умный" (!)  Делфи-компилятор не включит в результ.код НИ ЕДИНОГО байта, имеющего отношения к тому что ты задумал, но никак не использовал.

Нет вызова - нет проблем.


 
RO   (2006-02-17 16:18) [9]


> pargo


А если ты не понимаешь разницы между декларацией идентификатора и последующим использользованием ранее декларированного идентификатора, то тебе дорога в букварь по Паскалю, прежде че ты начнешь "тыкаться" в Делфи.


 
RO   (2006-02-17 16:22) [10]

Удалено модератором


 
RO   (2006-02-17 16:25) [11]

Удалено модератором


 
Mikhail   (2006-02-17 16:28) [12]


> RO

Напугал человека :)
Код !!!!!!!!!! (см. > Игорь Шевченко ©   (17.02.06 16:02) [7] )


 
RO   (2006-02-17 16:31) [13]

Я уже понял, кто и почем.


 
RO   (2006-02-17 16:49) [14]

Удалено модератором
Примечание: Прекрати.


 
pargo ©   (2006-02-17 16:49) [15]

Код очень большой, весь здесь не поместиться :((
приведу выдержки.
library TestLib;

uses
 //ShareMem,
 SysUtils,
 Windows,
 Classes,
........
 WinCrypt in "WinCrypt.pas";

{$R *.res}

begin

end.
//////////////////////////////////////////////////////////////////////////////

unit WinCrypt;

interface

uses Windows;
.............................................

function CryptAcquireContextA(
 var phProv: HCRYPTPROV;
 szContainer: LPCSTR;
 szProvider: LPCSTR;
 dwProvType: DWORD;
 dwFlags: DWORD
 ): BOOL; stdcall;
...........................................
{$IFDEF UNICODE}
function CryptAcquireContext; external ADVAPI32 name "CryptAcquireContextW";
{$ELSE}
function CryptAcquireContext; external ADVAPI32 name "CryptAcquireContextA";
{$ENDIF} // !UNICODE
.....................................................
end.


 
Игорь Шевченко ©   (2006-02-17 16:56) [16]

pargo ©   (17.02.06 16:49) [15]

Убери

SysUtils и Classes из

uses
//ShareMem,
SysUtils,
Windows,
Classes,

Если код очень большой, то сделай его маленьким и проверь утверждение


> Библиотека при згрузке не выполняет никаких действий,
> кроме того, что в ней есть функции типа: function SamFunction;
>  external ADVAPI32;


 
pargo ©   (2006-02-17 16:58) [17]

Игорь Шевченко ©   (17.02.06 16:56) [16]
Спасибо, попробую.


 
RO   (2006-02-17 17:01) [18]

Если то был ты, Игорь - прекращаю.


 
Игорь Шевченко ©   (2006-02-17 17:08) [19]


> Если то был ты, Игорь - прекращаю.


С просьбой - Я.


 
pargo ©   (2006-02-17 17:33) [20]

Игорь Шевченко ©   (17.02.06 16:56) [16]
Огромное спасибо ! Помогло: "Если код очень большой, то сделай его маленьким"
В одном из присоединяемых юнитов в uses оказался ShareMem.
( Убей бог, не помню зачем я его туда засунул :)) )
Убрал и все заработало.



Страницы: 1 вся ветка

Текущий архив: 2006.03.19;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.047 c
1-1139761602
Fl@sh
2006-02-12 19:26
2006.03.19
CryptoApi &amp; криптопровайдеры и информацыя о них


9-1126538054
WonderfulDay
2005-09-12 19:14
2006.03.19
запаковать растры


1-1139936640
Knight
2006-02-14 20:04
2006.03.19
Есть у кого-нить пример как заюзать сервер автоматизации mspaint?


15-1140769316
Харько
2006-02-24 11:21
2006.03.19
Вопрос по видеокартам


15-1140690398
msguns
2006-02-23 13:26
2006.03.19
Популярность форума