//myProgram.cppint imageW,imageH;//全局变量
display(void)
{
..........
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imageW,
imageH, 0, GL_RGBA, GL_UNSIGNED_BYTE,
checkImage);
..........
}
glutDisplayFunc(display)//display的格式为void(*display)(void)
{
...........
}my_fun(){
..........
imageW=1500;
imageH=1200;
glutDisplayFunc(display);
..........
}现在想把函数my_fun生成dll导出函数,以备其他程序调用。
因为glutDisplayFunc(display)函数要求diaplay是无参数的,所以只能把imageW,imageH这些变量设置为全局变量,但在dll中怎么实现呢?
display(void)
{
..........
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, imageW,
imageH, 0, GL_RGBA, GL_UNSIGNED_BYTE,
checkImage);
..........
}
glutDisplayFunc(display)//display的格式为void(*display)(void)
{
...........
}my_fun(){
..........
imageW=1500;
imageH=1200;
glutDisplayFunc(display);
..........
}现在想把函数my_fun生成dll导出函数,以备其他程序调用。
因为glutDisplayFunc(display)函数要求diaplay是无参数的,所以只能把imageW,imageH这些变量设置为全局变量,但在dll中怎么实现呢?
extern __declspec(dllexport) int iii;之后在调用工程前面都一样,所以略了。
int *pi = (int *)GetProcAddress(hDLL, "iii");
//dlltest.h
#ifdef DLLTEST_EXPORTS
#define DLLTEST_API extern"c" __declspec(dllexport)
#else
#define DLLTEST_API extern"c" __declspec(dllimport)
#endif
DLLTEST_API int add_Fun();//dlltest.cpp
#include "stdafx.h"
#include"dllTest.h"#ifdef _MANAGED
#pragma managed(push, off)
#endifBOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}#ifdef _MANAGED
#pragma managed(pop)
#endif//add_Fun.cpp
#include "stdafx.h"
#include"dlltest.h"
DLLTEST_API int add_Fun()
{
return (a+b);
}
比如我要定义两个个全局变量int i,int j,应该在dlltest.h文件中声明吗,具体怎么写呢,谢谢指教???
//dlltest.h
#ifdef DLLTEST_EXPORTS
#define DLLTEST_API extern"C" __declspec(dllexport)
#else
#define DLLTEST_API extern"C" __declspec(dllimport)
#endifDLLTEST_API int add_Fun();
DLLTEST_API int a;
DLLTEST_API int b;//dlltest.cpp
#include "stdafx.h"
#include"dlltest.h"
int a;
int b;
DLLTEST_API int add_Fun()
{
return (a+b);
}//调用dll的程序testdll.cpp
int *a=(int *)GetProcAddress(hDLL,"a");
AddFun addfun=(AddFun)GetProcAddress(hDLL,"add_Fun");
int *b=(int *)GetProcAddress(hDLL,"b");
*a=9;
*b=80;