请问我写的DLL怎么看不到导出的函数呢?

kaixinmengya 2010-06-17 01:41:52
我创建了一个Func工程,下面是Func.cpp的代码:

// Func.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"

extern "C" int WINAPI Add(int,int);

int WINAPI Add(int a, int b)
{
return a+b;
}

dllmain.cpp的代码:
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"

BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}


为什么只生成Func.dll,没有Func.lib,并且用depends打开dll看不到Add这个函数,里面都是空的。还请大家帮忙找找原因,谢谢了!
PS:Add的函数必须是WINAPI类型的。
...全文
134 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaixinmengya 2010-06-17
  • 打赏
  • 举报
回复
// Func.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
//#include "Func.h"

extern "C" __declspec(dllexport) int WINAPI Add(int,int);

__declspec(dllexport) int WINAPI Add(int a, int b)
{
return a+b;
}

奇怪啊?为什么这样就不行呢?查资料说是可以的啊?+_+

还望高人指点。呵呵~我希望能把两种方法都掌握了。呵呵~
kaixinmengya 2010-06-17
  • 打赏
  • 举报
回复
用__declspec(dllexport)试了,但是还是有乱码,可能在VS中只能用def的方法才能导出WINAPI的函数吧。呵呵
kaixinmengya 2010-06-17
  • 打赏
  • 举报
回复
看了下面的帖子,用def方法解决了问题了。呵呵
http://blog.csdn.net/caomiao2006/archive/2009/11/06/4777532.aspx
lvyinghong 2010-06-17
  • 打赏
  • 举报
回复
导出不是用extern "C" int WINAPI Add(int,int); 这样来声明的。

extern "C" int WINAPI Add(int,int);

int WINAPI Add(int a, int b)
{
return a+b;
}
改为

__declspec(dllexport) int WINAPI Add(int a, int b)
{
return a+b;
}


应该就可以了,参考http://msdn.microsoft.com/zh-cn/library/a90k134d(VS.80).aspx 的说明

这个是C c++的问题吧,到c版块问更好一点/
kaixinmengya 2010-06-17
  • 打赏
  • 举报
回复
我改了一下代码:
extern "C" _declspec(dllexport) int WINAPI Add(int,int);
这样倒是也有Func.lib了,也能能看到dll的函数名称了,不过是_Add@8这样的,怎么样才能变成ADD呢?
理不完的逻辑 2010-06-17
  • 打赏
  • 举报
回复
友情帮顶!

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧