//lib.h
#ifndef LIB_H
#define LIB_H
extern "C"int _declspec(dllexport)add(int x,int y);
extern "C"int _declspec(dllexport)sss(int a);
extern "C"struct _declspec(dllexport)result;//这样写不知道对不对
#endif//lib.cpp
#include "lib.h"
struct result
{
int Num1;
int Num2;
}result,*result1;
int add(int x,int y)
{
result.Num1 = x;
result.Num2 = y;
int b;
b = (x+y)*sss(5);
return b;
}
int sss(int a)
{
return a;
}// zssdlg1Dlg.cpp
struct result
{
int Num1;
int Num2;
}result,*result1;
#pragma comment(lib,"zsstest1.lib")
extern "C"_declspec(dllimport)add(int x,int y);void CZssdlg1Dlg::OnBtnCal()
{
int r = add(2,3);
CString s;
s.Format("%d",r);
AfxMessageBox(s);
int a[2];
// a[0] = result.Num1;
// a[1] = result.Num2;
}请问如何才能输出结构体result
#ifndef LIB_H
#define LIB_H
extern "C"int _declspec(dllexport)add(int x,int y);
extern "C"int _declspec(dllexport)sss(int a);
extern "C"struct _declspec(dllexport)result;//这样写不知道对不对
#endif//lib.cpp
#include "lib.h"
struct result
{
int Num1;
int Num2;
}result,*result1;
int add(int x,int y)
{
result.Num1 = x;
result.Num2 = y;
int b;
b = (x+y)*sss(5);
return b;
}
int sss(int a)
{
return a;
}// zssdlg1Dlg.cpp
struct result
{
int Num1;
int Num2;
}result,*result1;
#pragma comment(lib,"zsstest1.lib")
extern "C"_declspec(dllimport)add(int x,int y);void CZssdlg1Dlg::OnBtnCal()
{
int r = add(2,3);
CString s;
s.Format("%d",r);
AfxMessageBox(s);
int a[2];
// a[0] = result.Num1;
// a[1] = result.Num2;
}请问如何才能输出结构体result
结构体本身不用export,只用#include就好了
输出变量的话可以在头文件中这么写:
#ifdef MY_DLL
#define MY_DLL_API __declspec(dllexport)
#else
#define MY_DLL_API __declspec(dllimport)
#endif
struct my_struct
{
int member;
};
MY_DLL_API extern my_struct export_variable;
然后在某个.cpp中定义:
my_struct export_variable;
struct ss
{
int v;//速度
int d;//距离
};
ATField(field) 谢谢你给我的提示
我这样写可以吗?
在头文件中
#ifdef MY_DLL
#define MY_DLL_API __declspec(dllexport)
#else
#define MY_DLL_API __declspec(dllimport)
#endif
struct my_struct
{
int v;//速度
int d;//距离
};
MY_DLL_API extern my_struct 然后在工程dlg.cpp中定义一个结构体
struct my_struct
{
int v;//速度
int d;//距离
};
s->v;
s->d;
你这样写是不对的。我以为你想要输出变量。但实际上看你的要求,并不需要这么做,而是直接在DLL中定义一个函数,进行计算然后把结果返回就可以了。头文件your_dll.h可以这样写:
#ifdef MY_DLL
#define MY_DLL_API __declspec(dllexport)
#else
#define MY_DLL_API __declspec(dllimport)
#endif
struct my_struct
{
int v;//速度
int d;//距离
};
MY_DLL_API void Compute(my_struct &result);
然后在your_dll.CPP中实现Compute进行计算,返回结果
void Compute(my_struct &result)
{
.... // do the computation
}结构体的定义不用输出,直接#include,比如某个程序要用到你的DLL,那么可以写
#include "your_dll.h"void main()
{
my_struct result;
Compute(result);
....// use result
}
标准的DLL是不能够输出class的.
不过,MFC扩展DLL可以输出class
传指针不就行咯
-------------->>这个不行。