Автор: silver47 5.6.2013, 10:08
Добрый день. Собственно вопрос такой: Необходимо создать DLL на Qt и вызывать ее в 1С. Чтобы это работало необходимо зарегистрировать библиотеку через regsvr32.
Собственно была такая штука:
dll.h
extern "C" {
float getSomething();
}
dll.cpp#include "dll.h"
float getSomething(){
....
return returningValue;
}
И Вроде как когда-то давным давно она подключалась. По крайней мере работает. Пробую зарегистрировать новую подобную dll или перерегистрировать старую получаю сообщение, что точка входа не найдена. Главный вопрос, как ее добавить и почему раньше регистрировалось )
Спасибо.
Автор: Iron Bug 5.6.2013, 11:22
когда regsvr32 вызывается без параметров, она требует функции DllRegisterServer. иначе надо указывать в параметрах, что DllRegisterServer вызывать не требуется, но тогда будет нужна функция DllInstall.
P.S. к Qt вопрос отношения не имеет никакого.
Автор: silver47 5.6.2013, 11:26
Будьте так добры, подскажите как в таком случае решить проблему. Написать функцию DllRegisterService? Что в ней писать? Достаточно ли будет подобного:
STDAPI DllRegisterServer(void){
return S_OK;
}
Автор: Iron Bug 5.6.2013, 20:09
Цитата(silver47 @ 5.6.2013, 14:26)
Написать функцию DllRegisterService? Что в ней писать? Достаточно ли будет подобного:
дык, это смотря что там эта 1С хочет от библиотеки.
минимально - хватит и простого возврата результата. но тогда какой смысл вообще её регистрировать?
Автор: silver47 6.6.2013, 6:19
Цитата(Iron Bug @ 5.6.2013, 23:09)
но тогда какой смысл вообще её регистрировать?
Иначе 1С не видит библиотеки. Но я разобрался. Регистрировать нужно просто dynwrapx.dll, а потом, внимание, запустить 1С с правами администратора, тогда, и только тогда, произойдет чудо, и все заработает. В общем вопрос снят, вспомнил как делалось и почему прежняя версия работает.