编译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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Why the Anaconda command prompt is the first choice in
- 加载DLL时的C#异常.找不到解决方案
- 获取Microsoft 10 Edge浏览器Mime类型php
- Windows cli相当于Mac`xattr`?
- Windows Azure WebRole中的PHP53_via_FastCGI错误0xc000000
- windows-7 – Windows交换文件:当我有8GB RAM时,为什么我有
- .net-3.5 – 在将程序集集成到MSI之前对程序集进行模糊处理
- Windows – 什么是SMS代理主机?
- windows – TaskKill非常慢
- Windows 7是否自动为Python 3代码使用多个处理器?
推荐文章
站长推荐
热点阅读