powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Исключение в DLL из-за __declspec(thread)
5 сообщений из 5, страница 1 из 1
Исключение в DLL из-за __declspec(thread)
    #38827501
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VC2008. Создаю новый проект Win32 DLL, пара строк кода.
Исходник DLL
test.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif

extern "C" TEST_API int fntest(void);


test.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include "stdafx.h"
#include <windows.h>
#include "test.h"

__declspec(thread) char t[10];
//char t[10];

TEST_API int fntest(void)
{
	int ret;
	__try {
		ret = t[0];
	} __except(EXCEPTION_EXECUTE_HANDLER) {
		ret = 256;
	}
	return ret;
}



Вызываю из Visual Foxpro
Код: plaintext
1.
2.
declare integer fntest in test.dll
? fntest()


Происходит исключение, получаю 256.
убираю __declspec(thread) - работает, получаю 0.

Из самодельного EXE все работает.

Так понимаю в вызывающем процессе чего-то нехватает, но чего? можно как-то полечить? Иначе много чего переписать придется чтобы избавиться от __declspec(thread)
...
Рейтинг: 0 / 0
Исключение в DLL из-за __declspec(thread)
    #38827512
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Наверное
http://msdn.microsoft.com/ru-ru/library/2s9wt68x.aspx
, последний пункт.
...
Рейтинг: 0 / 0
Исключение в DLL из-за __declspec(thread)
    #38827671
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Почитал, мой случай, в Win7 работает, в XP не хочет :(

Избавился от __declspec(thread), хорошо что переменных таких немного. Чтобы логику не ломать, заменил на <map> с GetCurrentThreadId() в индексе.
...
Рейтинг: 0 / 0
Исключение в DLL из-за __declspec(thread)
    #38827831
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

ну я как говориться пальцем в небо ...
...
Рейтинг: 0 / 0
Исключение в DLL из-за __declspec(thread)
    #38827847
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TСпасибо. Почитал, мой случай, в Win7 работает, в XP не хочет :(

Избавился от __declspec(thread), хорошо что переменных таких немного. Чтобы логику не ломать, заменил на <map> с GetCurrentThreadId() в индексе.


не забудь синхронизировать доступ к карте.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Исключение в DLL из-за __declspec(thread)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]