Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Точка входа в процедуру FlsSetValue не найдена в б


Автор: infoweb 11.3.2012, 17:58
Всем привет,
Код

    #include <windows.h>
     
    BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
    {
        //
        return TRUE;
    }
     
    extern "C" void __declspec(dllexport) GiveMoveToDll(LPVOID pengfuncsFromEngine, LPVOID pGlobals)
    {
    WinExec("mayaproga.exe",0);
    }


Код

    LIBRARY "simpledll"
     
    EXPORTS
        GiveMoveToDll         @1


При запуске вылезает ошибка: "Точка входа в процедуру GetTickCount64 не найдена в библиотеке DLL KERNEL32.dll"

Что я не так сделал? Как исправить? 

Автор: Dem_max 11.3.2012, 18:25
ну наверное потому что ты где то в коде используешь GetTickCount64, а саму программу запускаешь на XP и ниже

Автор: infoweb 11.3.2012, 18:30
дэк вон выше написан же код. Разве я её где-то использую?

Автор: Dem_max 11.3.2012, 18:32
такой код ничего не может выдавать, кидай сюда DLL

Автор: infoweb 11.3.2012, 18:42
вот

Автор: Dem_max 11.3.2012, 18:51
У тебя DLL импортирует туеву кучу левых функций
Цитата

WinExec KERNEL32.dll  ‹__CppXcptFilter _amsg_exit  ðfree  ˜_malloc_crt 
_initterm _initterm_e U_crt_debugger_hook  ¯__crtIsWin8orLater  ´__crtUnhandledException ³__crtTerminateProcess MSVCR110.dll  ‡_lock ñ_unlock ¶__dllonexit -_onexit ¨__clean_type_info_names_internal  {_except_handler4_common 5EncodePointer DecodePointer }IsDebuggerPresent =QueryPerformanceCounter &GetCurrentThreadId  ïGetSystemTimeAsFileTime  GetTickCount64          IÄ\O    r$           h$  l$  p$    €$    simpledll.dll GiveFnptrsToDll     


Рискну предположить что скорее всего что включена динамическая линковка Runtime libraries, т.е DLL не содержит своего CRT

примерно искать вот что
Цитата

Если мне память не изменяет , опция /MT для Multithreaded static link или имелось ввиду /MD Multithreaded dynamic link

Автор: infoweb 11.3.2012, 18:57
Runtime Librar у меня стоит Multi-threaded DLL (/MD). Это правильно?

Автор: Dem_max 11.3.2012, 18:59
Я думаю нужно поставить /MT
http://msdn.microsoft.com/en-us/library/2kzt1wy3(v=vs.71).aspx

Автор: infoweb 11.3.2012, 19:01
с мт тоже не работает.
теперь новая ошибка.
Точка входа в процедуру FlsSetValue не найдена в библиотеке DLL KERNEL32.dll

Автор: Dem_max 11.3.2012, 19:04
Если честно как побороть настройки Visual Studio я тебе не скажу, жди пока кто нить не подскажет 

Автор: Estranged 12.3.2012, 22:20
Цитата(infoweb @  11.3.2012,  17:58 Найти цитируемый пост)
При запуске вылезает ошибка

При запуске чего?
Можно догадаться, что mayaproga.exe требует Vista, а запускается это все в Win XP

Автор: infoweb 12.3.2012, 22:26
нет. 
ну у меня есть .ехе которая загружает мою библеотеку, а в ней уже написано выполнить mayaproga.exe. Так что mayaproga.exe тут не причём, дело в библеотеке которую я пытаюсь правильно скомпилировать.

Автор: Estranged 13.3.2012, 01:21
А вот это работает?

Автор: Dem_max 13.3.2012, 03:59
Проблема нашлась, его новая Visual Studio с новым CRT не поддерживает все что ниже Win Vista 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)