加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

编译DLL时导出符号 – MSVC

发布时间:2020-12-14 04:28:13 所属栏目:Windows 来源:网络整理
导读:我有一个使用CMake作为构建系统的共享库.它在使用GCC的 Linux机器上编译很好.现在我正在尝试在Windows上编译.在指定之前,MSVC不会导出符号.我知道__declspec(dllexport).但是CMake维基中提供的示例令人困惑.请考虑以下代码. #if defined (_WIN32) #if define
我有一个使用CMake作为构建系统的共享库.它在使用GCC的 Linux机器上编译很好.现在我正在尝试在Windows上编译.在指定之前,MSVC不会导出符号.我知道__declspec(dllexport).但是CMake维基中提供的示例令人困惑.请考虑以下代码.

#if defined (_WIN32) 
  #if defined(MyLibrary_EXPORTS)
    #define  MYLIB_EXPORT __declspec(dllexport)
  #else
    #define  MYLIB_EXPORT __declspec(dllimport)
  #endif /* MyLibrary_EXPORTS */
#else /* defined (_WIN32) */
 #define MYLIB_EXPORT
#endif

我理解__declspec(dllexport),但想知道为什么使用__declspec(dllimport)?另外我该如何使用它?它是否像MYLIB_EXPORT void function()?

考虑我有一个名为foo()的C函数.这内部使用了几个静态函数.导出时我还需要导出静态函数吗?或者只导出属于API的入口函数是否足够?

任何帮助,将不胜感激.

解决方法

仅导出作为API一部分的入口函数就足够了.无需导出静态函数.

此外,无需使用__declspec(dllimport)进行功能.仅需要数据. Windows将自动执行导入功能.

以下链接可能会有所帮助:

http://msdn.microsoft.com/en-us/library/ms235636(VS.80).aspx

http://msdn.microsoft.com/en-us/library/ms682589(VS.85).aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读