我在VS2010下开发的C ++ Dll程序中定义了三个函数。
int __stdcall Scan()
{
...
}
int __stdcall Setup(int e_time, double s_value, double cs_value, double gain, int nIm, char* name)
{
...
}
int __stdcall TearDown()
{
....
}
我在Program.def中将它们定义为
LIBRARY
EXPORTS
Scan @1
Setup @2
TearDown @3
我还有一个headefile Program.h
//DLL Export-Import definitions
#define BUILD_DLL
#ifdef BUILD_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif
但我收到了一些错误:
和
错误消息没有抱怨定义的第三个函数。我在链接器中使用了/ MAP选项,并为映射文件定义了文件名,但是我没有获得MAP文件输出来检查这些sysmbol的定义方式。我不能使用 dumpbin 程序,因为build还没有创建一个dll文件。
我被困住了。任何帮助/指针将不胜感激。感谢。
答案 0 :(得分:1)
您需要声明C风格的链接或C ++ 名称修饰会使事情变得混乱。
对每个功能使用
extern "C" {
/*your function here*/
}