Каким способом можно экспортировать глобальную переменную?
Код:
// 8ca.h
#pragma once
#include <windows.h>
#include <process.h>
#pragma section(".newtls", read, write)
#pragma section(".newtls1", read, write)
#pragma section(".newtls2", read, write)
#pragma section(".newtls3", read, write)
__declspec(allocate(".newtls1")) int begin;
__declspec(allocate(".newtls3")) int end;
#pragma comment(linker, "/MERGE:.newtls3=.newtls2")
#pragma comment(linker, "/MERGE:.newtls2=.newtls1")
#pragma comment(linker, "/MERGE:.newtls1=.newtls")
#pragma once
#include <windows.h>
#include <process.h>
#pragma section(".newtls", read, write)
#pragma section(".newtls1", read, write)
#pragma section(".newtls2", read, write)
#pragma section(".newtls3", read, write)
__declspec(allocate(".newtls1")) int begin;
__declspec(allocate(".newtls3")) int end;
#pragma comment(linker, "/MERGE:.newtls3=.newtls2")
#pragma comment(linker, "/MERGE:.newtls2=.newtls1")
#pragma comment(linker, "/MERGE:.newtls1=.newtls")
Код:
// dlltest.c
#include <windows.h>
#include <stdio.h>
#include "8ca.h"
__declspec(allocate(".newtls2")) int data = 6;
extern "C" __declspec(dllexport) void _cdecl WriteRead6(void *args)
{
printf("In dll-6 begin = %d end = %d data = %d\n", &begin, &end, &data);
}
#include <windows.h>
#include <stdio.h>
#include "8ca.h"
__declspec(allocate(".newtls2")) int data = 6;
extern "C" __declspec(dllexport) void _cdecl WriteRead6(void *args)
{
printf("In dll-6 begin = %d end = %d data = %d\n", &begin, &end, &data);
}
А в библиотеку можно дописывать? если да, то допишите функцию что-то вроде этого extern "C" int getData() {return data;}