C语言编译后无法导出DLL函数怎么回事?

zkeenly 2017-01-17 10:41:14
edr.c
#include "windows.h"
#include "edr.h"


int WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason,PVOID pvReserved)
{

return TRUE;
}

//callback 为windows程序所要求u
//extern "C" __declspec(dllexport) 为动态链接库所要求 // 已经在头文件中定义
//若没有声明 则不能再dll外部调用
// 如果在C++中调用C语言写的dll 则dll要写上extern "C"

EXPORT BOOL CALLBACK EdrCenterTextA(HDC hdc,PRECT prc,PCSTR pString) // 多字节字符串
{
int iLength;
SIZE size;
iLength = lstrlenA(pString);
GetTextExtentPoint32A(hdc,pString,iLength,&size);
return TextOutA(hdc,(prc->right - prc->left -size.cx)/2,
(prc->bottom - prc->top -size.cy)/2,pString,iLength);



}
EXPORT BOOL CALLBACK EdrCenterTextW(HDC hdc, PRECT prc, PCWSTR pString)//宽字符字符串
{
int iLength;
SIZE size;
iLength = lstrlenW(pString);
GetTextExtentPoint32W(hdc,pString,iLength,&size);
return TextOutW(hdc,(prc->right - prc->left -size.cx)/2,
(prc->bottom - prc->top -size.cy)/2,pString,iLength);
}


edr.h
#ifdef __cplusplus 
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif

EXPORT BOOL CALLBACK EdrCenterTextA(HDC hdc,PRECT prc,PCSTR pString); // 多字节字符串
EXPORT BOOL CALLBACK EdrCenterTextW(HDC hdc, PRECT prc, PCWSTR pString);//宽字符字符串

#ifdef UNICODE // 根据属性设置中的unicode 判断
#define EdrCenterText EdrCenterTextW
#else
#define EdrCenterText EdrCenterTextA
#endif


为什么编译后没有生成dll 但是显示编译成功了 lib文件也没有。
提示信息:
1>------ Rebuild All started: Project: edr, Configuration: Release Win32 ------
1>Deleting intermediate and output files for project 'edr', configuration 'Release|Win32'
1>Compiling...
1>edr.c
1>Linking...
1> Creating library D:\CProject\yjx\test63\edr\Release\edr.lib and object D:\CProject\yjx\test63\edr\Release\edr.exp
1>Generating code
1>Finished generating code
1>Embedding manifest...
1>Build log was saved at "file://d:\CProject\yjx\test63\edr\edr\Release\BuildLog.htm"
1>edr - 0 error(s), 0 warning(s)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
...全文
177 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-01-17
  • 打赏
  • 举报
回复
项目类型错误?
lunat 2017-01-17
  • 打赏
  • 举报
回复
D:\CProject\yjx\test63\edr\Release\edr.lib 明显不是你查看的路径:...\CProject\yjx\test63\edr\edr\Release
NiceBASIC测试版3是新型编程工具跟 VC,VB,DELPHI类似。 NiceBASIC测试版3 上传日期:2008年12月13日11:02:21 NiceBASIC中文编程语言,是采用类似BASIC语法,并兼有C++的一些高级特性(比如:指针操作运算、自动化类、重载函数、重载操作符等等)集于一身的全中文关键字的编程语言,简称NB。NB内置有标准BASIC函数库,和图像库(用于编写游戏),还可以使用标准C语言函数库里的函数(调用静态库形式链接),也就是说NB可以在编译时链接所有用标准C语言编写的静态库(LIB)做为函数功能扩展,并且还可以调用WIN32API的大部分函数,已经在内部定义声明,直接引用即可,就像C++的WINDOWS开发包。并且NB的编译器是永久免费的,除了可以编译自身的源码外,还可以编译RC资源脚本,合成到可执行文件中,NB的编译器提供了构建完整标准应用程序的所有功能。 其独特个性化的全中文式编程模式,更易于国人理解和方便学习编程,不用懂英文也可以编写自己的程序软件。变量和函数等标识符名称,也可以用中文表示,方便于源码的交流和省略注释说明。 NB可以编译四种类型的可执行文件: 控制台程序。类似于DOS界面的命令行提示符,但只能运行在WIN32平台。 WINDOWS图形界面程序。调用系统的WIN32API来构建GUI窗体组件。 WIN32 DLL 动态链接库。导出函数可以为多种调用约定,比如:Stdcall(标准WINAPI)、 Cdecl(兼容C语言)、Pascal 。可供给其它语言使用。 静态链接库。供给标准的C语言调用链接。就是说NB的静态库是兼容C语言的LIB,互相通用。

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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