登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Fenying

Learning && Studying && !Imitating.

 
 
 
 
 

日志

 
 
 
 

将无源代码的 lib 内函数添加到 dll 输出函数  

2014-01-30 11:52:51|  分类: Windows SDK |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
文/Fenying

  今天想把一个用汇编写的 lib 整合到一个 dll 的输出函数中,用 _declspec(dllexport) 导出该函数不可行,最后用 def 模块导出文件,终于在 Visual Studio 2012 下成功通过测试。

  以 lib 函数 myfunc1 为例:

int __stdcall myfunc1(); 


  在 dllTest.h 内应该声明:

#ifdef _USRDLL
# pragma comment(lib, "libMyFunc.lib") /* Sources static library */
#else
# pragma comment(lib, "dllTest.lib") /* Lib for dll. */
#endif


#ifdef __cplusplus /* myfunc1 is written in Assembly. */

extern "C"

#endif

int __stdcall myfunc1();


  然后使用 dllTest.def 模块定义文件,写如下内容:(Visual Studio 2012下,把“项目属性\连接器\输入\模块定义文件”修改为"dllTest.def"

LIBRARY dllTest

EXPORTS

myfunc1


  编译,即可生成 dllTest.dll 和 dllTest.lib。

  下面写个程序测试下。

  新建项目 testDll,然后把 dllTest.h, dllTest.dll, dllTest.lib 都复制到新项目的目录下。

  在 main 函数里调用 myfunc1,测试 OK!

-----------------------------------------------------------

  由此,可以知道用 def 模块定义文件可以导出 _declspec(dllexport) 所不能导出函数(主要是从其它库导入的函数),而_declspec(dllexport) 适合导出项目内的 C++ 函数和 C++ 类。
  评论这张
 
阅读(548)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018