Найдено результатов: 11

Может ли Windows dll получить свое собственное имя файла?

Файл Windows exe имеет доступ к командной строке, которая его вызвала, включая путь и имя файла. напр.. C:\MyApp\MyApp.exe --help .

Но это не так для dll, вызванного через LoadLibrary . Кто-нибудь знает способ для dll узнать, каков его путь и имя файла?

В частности, меня интересует решение Delphi, но я подозреваю, что ответ будет практически одинаковым для любого языка.

windows   delphi   winapi   dll    

451   1   16:03, 1st July, 2020


IIS 6/COM+ зависает

У меня есть веб-приложение, которое иногда просто висит над тяжелой нагрузкой. Чтобы заставить его вернуться, я должен убить процесс "dllhost.exe". Кто-нибудь знает что делать?

Это классический ASP (VBScript) приложение с большим количеством объектов COM+.

Сервер имеет следующую конфигурацию:

  • Intel Core 2 Duo 2.2 GHz / 4 GB RAM
  • Windows Server 2003 Web Edition SP2
  • IIS 6.0

В журнале событий, связанных с объектами COM, есть некоторые ошибки. Но почему ошибки в объектах COM могут привести к сбою всего сервера?

Объекты COM-это объекты PowerBuilder, развернутые как объекты COM.

Является ли IIS 7.0 (намного) более стабильным, чем IIS 6.0?

iis   dll   asp-classic   crash    

439   3   20:14, 3rd August, 2020


Как я могу отменить регистрацию COM DLL, изначально добавленных с RegSvr32, когда /u arg не работает?

Правильно, изначально бежал:

c:\regsvr32 Amazing.dll

затем (случайно-я мог бы добавить) я должен был запустить его снова, и (действительно) снова, когда были выпущены новые версии 'Amazing.dll'. Да , теперь я знаю, что должен был бежать.:

c:\regsvr32 /u Amazing.dll

заранее-но эй! А я и забыл.

Чтобы перейти к сути дела, когда я добавляю ссылку COM в VS, я вижу 3 экземпляра 'Amazing', все они указывают на одно и то же место (c:\Amazing.dll), запуск regsvr32 /u удаляет одну из ссылок, во второй раз - ничего не делает...

Как мне избавиться от этих ссылок? Я смотрю на сценарий regedit? - Если да - что именно произойдет, если я удалю один из ключей???

Овации

visual-studio   com   regsvr32   dllregistration    

547   3   10:25, 24th August, 2020


Определение Загруженных Сборок

Как я могу определить все сборки, которые мои .NET настольное приложение загрузилось? Я хотел бы поместить их в поле about, чтобы я мог запрашивать клиентов по телефону, чтобы определить, какая версия XYZ у них есть на их PC.

Было бы неплохо видеть как управляемые, так и неуправляемые сборки. Я понимаю, что список будет длинным, но я планирую ударить по нему инкрементным поиском.

.net   winforms   dll   assemblies    

448   5   21:08, 22nd August, 2020


Перегруженные функции в файле def C++ DLL

Я пишу C/C++ DLL и хочу экспортировать определенные функции, которые я делал до использования файла .def, как это

LIBRARY "MyLib"
EXPORTS
  Foo
  Bar

например, с кодом, определенным следующим образом:

int Foo(int a);
void Bar(int foo);

Однако, что делать, если я хочу объявить перегруженный метод Foo() как:

int Foo(int a, int b);

Поскольку файл def имеет только имя функции, а не полный прототип, я не вижу, как он будет обрабатывать перегруженные функции. Вы просто используете одну запись и затем указываете, какая перегруженная версия вам нужна при передаче правильно прототипированного указателя функции на LoadLibrary() ?

Изменить: чтобы быть ясным, это на Windows с помощью Visual Studio 2005

Edit: пометил метод non-def (__declspec) как answer...I знаю, что это на самом деле не решает проблему с использованием def-файлов, как я хотел, но кажется, что, скорее всего, нет (официального) решения с использованием def-файлов. Однако оставим этот вопрос открытым, если кто-то знает что-то, что у нас нет перегруженных функций и def-файлов.

c++   c   dll    

557   6   21:04, 7th August, 2020


Asp.net переустановка DLL в GAC

Я пытаюсь переустановить DLL в GAC, все, кажется, работает нормально, но веб-приложение, обращающееся к нему, по-прежнему использует старый.

Старый DLL-это та же версия, что и новый, только с незначительным редактированием, он будет использоваться 50 различными сайтами, поэтому изменение версии, а затем изменение ссылки в web.config не является хорошим решением.

Перезапуск сервера IIS или рабочего процесса не является вариантом, поскольку уже запущено 50 сайтов, которые должны продолжать это делать.

кто-нибудь знает, что я делаю неправильно или что я могу сделать, чтобы исправить эту ситуацию?

iis   dll   gac    

477   2   04:21, 19th August, 2020


Экспорт класса C++ из класса DLL

Большая часть моей разработки C/C++ включает монолитные файлы модулей и абсолютно никаких классов, поэтому обычно, когда мне нужно сделать DLL с доступными функциями, я просто экспортирую их, используя стандартную директиву __declspec(dllexport) . Затем доступ к ним осуществляется либо динамически через LoadLibrary() , либо во время компиляции с помощью заголовка и lib-файла.

Как это сделать, если вы хотите экспортировать весь класс (и все его открытые методы и свойства)?

Можно ли динамически загрузить этот класс во время выполнения, и если да, то как?

Как бы вы сделали это с заголовком и lib для связывания времени компиляции?

c++   windows   dll    

696   6   14:15, 5th August, 2020


Windows Vista: не удается загрузить DLL 'x.dll': недопустимый доступ к памяти. (DllNotFoundException)

Сегодня днем я тестировал на коробке клиента, которая имеет Windows Vista (у него был дом, но я тестирую на бизнес-издании с теми же результатами).

Мы используем .DLL, который получает аппаратное обеспечение ID компьютера. Его использование очень просто, и образец программы, которую я создал, работает. Dll - это от AzSdk . На самом деле, это прекрасно работает под Windows XP. Однако, по какой-то странной причине, внутри нашего проекта (намного больше) мы получаем это исключение:

Exception Type:        System.DllNotFoundException
Exception Message:     Unable to load DLL 'HardwareID.dll': Invalid access to memory location. (Exception from HRESULT: 0x800703E6)
Exception Target Site: GetHardwareID

Я не знаю, что может быть причиной проблемы, так как у меня есть полный контроль над папкой. Проект представляет собой приложение форм c#.net Windows, и все работает нормально, за исключением вызова внешней библиотеки.

Я объявляю его следующим образом: (Примечание: это не библиотека COM, и ее не нужно регистрировать).

[DllImport("HardwareID.dll")]
public static extern String GetHardwareID(bool HDD,
   bool NIC, bool CPU, bool BIOS, string sRegistrationCode);

И тогда вызывающий код достаточно прост:

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = GetHardwareID(cb_HDD.Checked, 
                                  cb_NIC.Checked, 
                                  cb_CPU.Checked, 
                                  cb_BIOS.Checked, 
                                 "*Registration Code*");
}

Когда вы создаете пример приложения, он работает, но внутри моего проекта он не работает. Under XP работает нормально. Есть ли идеи о том, что я должен сделать в Vista, чтобы сделать эту работу? Как я уже сказал, папка и ее подпапки имеют полный контроль над "Everybody".

UPDATE: у меня не установлена Vista SP 1.

UPDATE 2: я установил Vista SP1 и теперь, когда UAC отключен, даже простой пример не работает!!! : (Чертова Виста.

c#   .net   windows-vista   dllnotfoundexception    

604   6   23:18, 10th August, 2020


Программа на Qt крушится при многократном использовании функции из DLL

Создаю чистый проект в Qt Creator. В конструкторе формы подключаю DLL и пытаюсь многократно использовать функцию из DLL:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    QLibrary *library = new QLibrary("UniversalDLL.dll");
 
    typedef int (*testFunc)(int);
    testFunc tst = (testFunc) library->resolve("wrr");
    if (!tst)
    {
        QMessageBox::critical(this, this->windowTitle(), tr("Error loading DLL!"));
        exit(0);
    }
 
    qDebug() << tst(1);
    qDebug() << tst(2);
    qDebug() << tst(3);
    qDebug() << tst(4);
    qDebug() << tst(5);
    qDebug() << tst(6);
    qDebug() << tst(7);
    qDebug() << tst(8);
    qDebug() << tst(9);
    qDebug() << tst(10);
    qDebug() << tst(11);
    qDebug() << tst(12);
    qDebug() << tst(13);
    qDebug() << tst(14);
    qDebug() << tst(15);
}


DLLка лежит в папке с проектом и успешно подключается, в ней одна единственная функция (проект DLL создан в Visual Studio):

extern "C" __declspec(dllexport) int __stdcall wrr(int abonent)
{
return abonent;
}


Крах программы происходит как в release, так и в debug, причем количество использований функции до крушения программы разное в debug и relese:

C:\testettstettd\release\testettstettd.exe завершился с кодом -1073741819

Например, сейчас, в release крушится на 7 итерации использования функции из DLL, а в debug (уже странно?!) перестало крушится.

Однократное использование функции из DLL работет. Что за ерунда, третий день пошел, как пытаюсь разобраться. Пробовал подключать и без использования QLibrary и динамически и статически. Проблема скорее всего не в DLL, т.к. проверял на разных дллках и DLL из проекта на Delphi успешно подключается и работает. Ну и как водится: ПАААМАГИИИТЕЕ!?

Qt   DLL    

372   5   01:38, 16th August, 2020


Возможно ли сделать объектно-ориентированное API через DLL (GCC, C++)?

Добрый день.
Вопрос следующий — пусть есть абстрактное приложение, к которому хочется добавить некоторое API для плагинов. Плагины скорее всего будут представлять собой DLL'ки, которые динамически подгружаются основным кодом.
В Java можно сделать интерфейс IPlugin, а в плагине расширить его: public class MySuperPlugin implements IPlugin, после чего спокойно подгружать тысячи классов по именам. Можно ли сделать что-то похожее в C++? Я знаю, что можно спокойно подгружать обычные функции (не члены класса) из DLL. Пока придумались только такие костыли: делаем много функций «переходников», каждая из которых вызывает соответствующий член класс. Но это ужас.
Как решить? Ведь, наверное, можно.

API   ООП   C++   GCC   DLL    

315   2   13:48, 1st August, 2020


MFC в «обычной» Win32 DLL и DLLMain?

Кто разбирается в MFC, подскажите пожалуйста, правильно ли я понимаю следующие два момента:


1. В обычной Win32 DLL разработчик включает статическую связь с MFC и использует некоторые MFC-классы (например, include &quot;afxdlgs.h&quot; и CFileDialog). Функция DllMain не определена. В результате в DLL будет встроена DllMain из MFC, а не обычная Win32 DllMain, так?


2. Если так, то мне тоже нужно добиться, чтобы у меня была DllMain из MFC, но у меня уже есть DllMain. (Сейчас у меня чистая Win32 DLL, а основное приложение использует MFC, я пытаюсь разобраться в одном непонятном баге с модальными диалогами, и подозрение падает как раз на MFC.) Подскажите, как мне правильно переписать имеющуюся DllMain, чтобы подключить MFC. Вот набросок::

include ? /* не знаю, какой заголовок включить */

class MyDll: public CWinApp
{
public:
/* нужен ли конструктор/деструктор? */
virtual BOOL InitInstance();
virtual BOOL ExitInstance();
} theDll;

BOOL
MyDLL::InitInstance()
{
CWinApp::InitInstance();
/* код из DllMain, DLL_PROCESS_ATTACH. hInst в theDll.m_hInstance */
return TRUE;
}

BOOL
MyDLL::ExitInstance()
{
/* код из DllMain, DLL_PROCESS_DETACH */
return CWinApp::ExitInstance();
}

Windows   DLL   MFC    

297   1   21:06, 1st October, 2020