delphi XE: нарушение прав доступа внутри вызова LoadLibrary()

Я получаю нарушение прав доступа при вызове DLL в проекте. И проект, и dll используют модуль Chart (TChart). Удалите Tchart из проекта, который LoadLibrary может успешно вернуть. Это также работает, если Tchart удален из dll. Я не понимаю, почему блок диаграммы нельзя использовать и в проекте, и в dll? И как решить эту проблему.


person Sarah Cla    schedule 24.02.2011    source источник
comment
Чтобы использовать его в DLL, вы должны пойти по пути Delphi и создать BPL. Которая находится под DLL, но содержит некоторый связующий код для магии компилятора Delphis.   -  person 0xC0000022L    schedule 24.02.2011
comment
Нет причин, по которым TeeChart нельзя использовать в DLL.   -  person David Heffernan    schedule 24.02.2011
comment
@David Heffernan Я так запутался, почему мой проект не может загрузить dll с помощью TeeChart. И я сделал простой проект, а также простую dll, не делая ничего, кроме включения TeeChart. Это все еще происходит сбой. Любое предложение?   -  person Sarah Cla    schedule 24.02.2011
comment
@STATUS_ACCESS_DENIED Я не совсем понимаю ваши рекомендации. Можете ли вы рассказать мне что-нибудь еще об этом?   -  person Sarah Cla    schedule 24.02.2011
comment
@Sarah Cla: см. ответ от RRUZ. Кажется, это известная проблема.   -  person 0xC0000022L    schedule 24.02.2011
comment
Похоже, что RRUZ на деньги. Нет ничего плохого в TChart в DLL (как подразумевает @STATUS). Но похоже на ошибку TChart. Вот почему стоит использовать полную версию, которая поставляется с исходным кодом, и тогда вы (больше) контролируете свою судьбу.   -  person David Heffernan    schedule 24.02.2011
comment
Известно, что формы/компоненты Delphi в простой DLL вызывают проблемы, в то время как BPL по-прежнему подходят для таких случаев. В противном случае вопрос на самом деле не дает достаточно подробностей;)   -  person 0xC0000022L    schedule 24.02.2011
comment
@STATUS Формы/компоненты Delphi вызывают проблемы только в том случае, если вы делаете это неправильно.   -  person David Heffernan    schedule 24.02.2011
comment
@STATUS Если у вас есть компоненты VCL в DLL, они должны оставаться там. Проблемы возникают, когда вы разрешаете компонентам VCL пересекать границу. Я уверен, что вы все это знаете!! ;-)   -  person David Heffernan    schedule 24.02.2011


Ответы (2)


Сара, это ошибка компонента TChart, расположенного в модуле TeCanvas. сотрудники Steema знают об этом. вы можете проверить следующую тему Delphi XE, TChart in exe and in dll на форумах embarcadero.

person RRUZ    schedule 24.02.2011
comment
думает над вашим ответом. Удручает, что эта проблема до сих пор не решена. Даже крайний срок нового пакета не определен - person Sarah Cla; 25.02.2011

Я заметил эту ошибку сегодня при использовании Delphi XE и FastReport 6 VCL, когда в exe у меня есть FrxChart и в библиотеке. После долгого процесса отладки я понял, что только TeEngine, включенный в оба приложения, может вызвать сбой функции LoadLibrary(). Поскольку ссылка на форум больше не работает, могу ли я исправить эту ошибку (кроме удаления диаграмм в библиотеке)?

person InnerWorld    schedule 25.08.2020