1. VC2005 release 版本 连接的问题
今天用 vc2005 编译程序的时,Debug 版本可以生成可执行文件,并成功运行,但 release 版本在连接时出现问题,报出的错误如下:
1>Linking...
1>EnumProtocals.obj : fatal error LNK1276: invalid directive 'Visual' found; does notstart
1>Build log was saved at "file://d:\MyProjects\VC2005\WinNet\SimpleTest\EnumProtocals\Release\BuildLog.htm"
1>EnumProtocals - 1 error(s), 1 warning(s)
我所编译的程序的片段如下:
#pragma comment(lib, "C:\\Develop\\Microsoft Visual Studio 8\\VC\\PlatformSDK\\Lib\\WS2_32.Lib")
错误信息中说在连接中有无效的指令 "visual"。由此可以推断 VC2005 的连接程序存在 bug :当连接的库的路径名中有空格时,连接失败。当该路径添加到工程中的属性中,程序片段改为如下形式:
#pragma comment(lib, "WS2_32.Lib")
则releasse 版本编译连接正确,可以生成可执行程序。
2. visual studio 2005下命令行编译、连接生成dll
(1)首先设置环境变量
我的visual studio 2005的安装目录为E:\program\Microsoft Visual Studio 8, 所以设置include, lib, path的.bat文件为 :
@echo off
set include=E:\program\Microsoft Visual Studio 8\VC\PlatformSDK\Include;
E:\program\Microsoft Visual Studio 8\VC\Include
set lib=E:\program\Microsoft Visual Studio 8\VC\PlatformSDK\Lib;
E:\program\Microsoft Visual Studio 8\VC\Lib
set path=E:\program\Microsoft Visual Studio 8\VC\bin; %path%
echo on
(可以为include 和 lib 设置多个路径)
仅仅设置好环境变量还是不够的,否则,ml编译的时候会弹出“无法找到组建”的错误对话框,错误的信息是:”没有找到mspdb80.dll,.....”。 mspdb80.dll位于E:\program\Microsoft Visual Studio 8\Common7\IDE和E:\program\Microsoft Visual Studio 8\Team Tools\Performance Tools目录下,注意,这时即使把这两个目录加入Path 中,系统仍找不到mspdb80.dll,并弹出同样的错误对话框,这可能是vs2005自身的bug。所以,只能将mspdb80.dll拷贝到 E:\program\Microsoft Visual Studio 8\VC\bin下。
(2)编译、连接
环境变量设置好了,编译和连接的命令是很简单的。
编译命令:ml /c dllname.cpp (也可以加 /coff ,编译成coff格式的.obj文件)
我是用.def文件导出函数,所以连接的命令是:
link /dll /dllname.obj /def:defname.def
其中,dllname为dll的名字,defname同理。
生成dll后,下面就是编写程序调用了。
3. __declspec(import)的作用
(1)
客户端隐式(.exe)引用一个dll中的函数时,该函数的声明前可以用__declspec(import)说明,也可以用__declspec(export)说明。虽然按道理说,应该用__declspec(import)对所引用的函数进行说明,但事实证明,无论用__declspec(import)或__declspec(export)进行说明,不影响调用效果。
与次类似,若一个dll调用了另一个dll的函数,比如,dll2中调用了dll1的函数func,则在dll2中,对func的说明可以为__declspec(import)或__declspec(export), 不影响调用的效果。
4. sleep(), delay() 等延时函数
VC2005 的 C RunTime Library 中没有提供 TC 中的sleep(), delay()等延时函数。可能是 Windows SDK 中提供了 Sleep() API 吧。
分享到:
相关推荐
[178]VC源码:串口通讯.zip上位机开发VC串口学习资料源码下载[178]VC源码:串口通讯.zip上位机开发VC串口学习资料源码下载[178]VC源码:串口通讯.zip上位机开发VC串口学习资料源码下载[178]VC源码:串口通讯.zip...
vc2005vc2005vc2005vc2005vc2005vc2005
VC编程:类似qq的vc源码(带服务端和客服端) VC编程:类似qq的vc源码(带服务端和客服端) VC编程:类似qq的vc源码(带服务端和客服端)
VC编程:汉字识别(带字库)TinySvmTest 很好的VC编程算法!模式识别算法!
VC技巧:在程序的状态栏中实现进度条.
最新VC助手:VA_X_Setup1626
TMS320VC5505与TMS320VC5504:数字信号处理器.pdf
vc编程:自动停靠窗体,吸附窗体,类似千千静听的窗体
首先说一下版本对照:Visual c++ 6.0(单独的C++编译器),VC----7.0(微软第一次把VC嵌入到Visual Studio .net),VC2003----VC7.1,VC2005----VC8.0,VC2008----9.0,因为.net框架是基于项目的,所以C++程序在VC...
vc绘图:gis绘图程序(简单矢量图形绘制).rar
VC 6.0:《计算机科学与技术》本科自考,上机实践考试专用软件,可 win10 本机练习:C 、C++
解决安装LR等软件报错问题,”此计算机缺少 vc2005_sp1_with_atl_fix_redist,请安装所有缺少的必要组件,然后重新运行此安装”
可以显示类似液晶时钟的VC类源码。继承于CStatic类。
VC助手最新版本支持vc6.0 vc2005 vc2008 VC助手最新版本支持vc6.0 vc2005 vc2008
VC 2005 32位微软系统专用 必备安装软件 文件不大可以随时随地备份
vc2005 亲测有效,解决一些旧版软件依赖的vc2005库的需求
vc2005的vc小助手破解版,安装后使用vc2005方便很多,也可以用于vc2008中
VC 2005 配置 OpenCV VC 2005 配置 OpenCV
VC助手(vc6-vc2005)都可用,亲测可用,完美破解
VC2005运行库SP1,一些VC编程的程序无法在电脑上运行时可以安装