VS2005中编译dll文件, 出现"共享段无法找到"的错误及解决办法
来源:互联网 发布:java毫秒转换成日期 编辑:程序博客网 时间:2024/04/27 18:09
今天我要做个dll文件,以提供给其它程序使用,按照向导用VS2005创建一个WIN32的DLL文件,在VS2005中,不再要求用.def文件来定义输出函数和共享数据段,而是用__declspec(dllexport)来定义输出函数.用/SECTION来定义共享数据段,好了,闲话不说,我在头文件中加入如下数据段:
#pragma data_seg("LJSec")
HWND volatile g_hWnd=NULL;
#pragma data_seg()
#pragma comment(linker,"/section:LJSec,RWS")
立即忍不住要编译,结果出现一个warning: 说是找不到LJSec的共享数据段.Linker失败,晕,我明明定义了,为何找不到呢?
用dumpbin /section:LJSec xxx.dll 找看这个共享段,结果也没有找到.而这个代码在VC6.0中是绝对不会有问题的.
没有办法,打开项目属性,
Configuration Properties
--- General
----Whole Program Optimization
在Whole Program Optimization选项中,默认是Use Link Time Code Generation,是不是这个优化的问题?我将此条选项改成No Whole Program Optimization,再次编译,编译通过!
只要编译通过了,再改回Use Link Time Code Generation,就不会再出现以前的问题了.
分析原因可能是由于初次编译,使用Link Time 编码生成的时候由于共享段还没有编译成obj文件,编译器找不到而发生错误.
- VS2005中编译dll文件, 出现"共享段无法找到"的错误及解决办法
- xcode编译后无法找到xx文件的错误解决办法
- vs2005中Def文件的使用方法(DLL编写无法找到函数名称)
- VS2005 无法找到文件MFC80ud.dll
- VS2005 无法找到文件MFC80ud.dll
- 静态库中使用MFC编译出现错误,共享DLL使用则正常的解决方案
- Fedora9.0和VMware6.5下编译内核出现arm-linux-gcc无法找到的错误解决办法
- VS2005运行程序时出现“没有找到MSVCP80D.dll"错误的解决方法
- VS2005运行程序时出现“没有找到MSVCP80D.dll"错误的解决方法
- VS2005运行程序时出现“没有找到MSVCP80D.dll"错误的解决方法 收
- VS2005运行程序时出现“没有找到MSVCP80D.dll"错误的解决方法
- AndroidAnnotations 使用在library项目中出现无法找到R文件下资源索引的错误
- 无法找到共享打印机的解决办法
- VS2005编译错误集锦及解决办法
- VS2005 编译Release版本出现清单文件的错误
- opencv2.3.1 vs2010中出现缺少Tbb_debug.dll及应用程序无法启动0*c150002的解决办法
- 关于VS2005智能设备中无法找到PInvoke DLL问题
- VS2005 msvcr80.dll / msvcr80d.dll 无法找到
- IDF—英特尔CPU计划:从四核到百核
- 微软拿到第5000个专利
- 美国称通过二氧化碳注入可使石油储量翻两番
- 中国四大名著中的三部正遭日本游戏企业抢注
- Microsoft Visual Studio 2005 无法调试应用程序的解决方法
- VS2005中编译dll文件, 出现"共享段无法找到"的错误及解决办法
- Qt 4.1.0 OpenSource + VC.NET 2003 编译安装完全版本
- Sqlserver 不存在或拒絕存取
- 给父亲算完一年的帐,我哭了
- 我以后要攒钱了
- 关于图像处理的一点问题
- 停不了的爱
- Linux下的多线程编程
- WebLogic域配置策略--手动和模板选项