У меня проблемы с динамической загрузкой библиотек - мой код паникует в Kern-Exec 3. Код выглядит следующим образом:
TFileName dllName = _L("mydll.dll");
TFileName dllPath = _L("c:\\sys\\bin\\");
RLibrary dll;
TInt res = dll.Load(dllName, dllPath); // Kern-Exec 3!
TLibraryFunction f = dll.Lookup(1);
if (f)
f();
Я получаю панику на TInt res = dll.Load(dllName, dllPath);
Что я могу сделать, чтобы избавитьсяэтой паники?mydll.dll - это действительно моя dll, которая имеет только 1 экспортированную функцию (для целей тестирования).Может, что-то не так с DLL?Вот что это:
def файл:
EXPORTS
_ZN4Init4InitEv @ 1 NONAME
файл pkg:
#{"mydll DLL"},(0xED3F400D),1,0,0
;Localised Vendor name
%{"Vendor-EN"}
;Unique Vendor name
:"Vendor"
"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\mydll.dll"-"!:\sys\bin\mydll.dll"
файл mmp:
TARGET mydll.dll
TARGETTYPE dll
UID 0x1000008d 0xED3F400D
USERINCLUDE ..\inc
SYSTEMINCLUDE \epoc32\include
SOURCEPATH ..\src
SOURCE mydllDllMain.cpp
LIBRARY euser.lib
#ifdef ENABLE_ABIV2_MODE
DEBUGGABLE_UDEBONLY
#endif
EPOCALLOWDLLDATA
CAPABILITY CommDD LocalServices Location MultimediaDD NetworkControl NetworkServices PowerMgmt ProtServ ReadDeviceData ReadUserData SurroundingsDD SwEvent TrustedUI UserEnvironment WriteDeviceData WriteUserData
исходный код:
// Exported Functions
namespace Init
{
EXPORT_C TInt Init()
{
// no implementation required
return 0;
}
}
заголовочный файл:
#ifndef __MYDLL_H__
#define __MYDLL_H__
// Include Files
namespace Init
{
IMPORT_C TInt Init();
}
#endif // __MYDLL_H__
У меня нет идей по этому поводу ... Любая помощь очень ценится.
PS Я пытаюсь сделать RLibrary:: Загрузка, потому что у меня проблемы со статической связью.Когда я делаю статическое связывание, моя основная программа вообще не запускается.Я решил проверить, что происходит, и обнаружил эту проблему с помощью RLibrary :: Load.