导航:首页 > 源码编译 > vs2008编译VC运行时库

vs2008编译VC运行时库

发布时间:2022-05-25 01:23:07

① vs2008中调用vc生成的动态库,如何将参数传进去在线等答案!

这个DLL你是怎么调用的,是显式调用还是隐式调用,隐式就是#pragma comment(lib,"xx.lib"),显示就用LoadLibrary和GetProcAddress,获取到函数接口后,直接像调用源程序中函数一样调用就可以了,参数就也是一样传递。

② vs2008开发C++生成的程序是可以直接运行的吗

C ++的可以直接运行,如果你用静态链接的话,不需要带VC运行库过去,如果你是链接的动态库(默认),需要把VC的运行库带过去(用VC自带的工具可以查看需要哪些动态库,VC6的运行库程序是msvcrt.dll)

VB的同样需要带VB的运行库过去,否则如果目标机器上没有的话同样运行不起来的

开发小程序没什么区别,不过VB是傻瓜式的,上手快,但大项目没有用VB的,以后不易于发展,C才是王道

③ VS2008 运行需要那些库

有托管代码和非托管代码、动态连接和静态连接、以及调试版和发布版之分,静态连接的非托管代码不依赖任何库,动态连接的非托管代码,发布版和调试版依赖相应的VC运行库,使用MFC还依赖MFC库,托管代码依赖与你的.NET版本相同的.NET框架。

④ vs 2008 如何编译C语言

1. vc++就可以了
2. 应该建立*.cpp文件
3. 首先你要创建一个工程,创建一个win32控制台应用程序的 工程
然后再资源文件视图里可以添加 你现成的源文件
4. 在工程环境下 可以按F5运行(或是工具栏中间的那个绿色的小箭头)

回答完毕 希望你能明白

⑤ 在vs2008下,新建了vc++控制台应用程序,调用dll里面的函数。但是当运行的时候发现,窗口显示不出来。

这个问题要从控制台如何输出说起,系统会为程序生成3个输出流,即out,in,err。所以当你在程序里调用库函数如printf, cout等时,都是库函数对这3个流进行操作。此处你如果把这些库函数调用放到dll里。虽然这里你用的是静态加载,不过因为dll和主程序的模块参数不同(相关可以查查这个宏AFX_MANAGE_STATE)。也就是说dll里的代码访问不到主程序里的这3个流。所以没有输出。

初学的话,可以写一些返回值的函数。然后在main中察看返回值。

⑥ VS2008 写C++如何编译执行

首先请问你 是创建的什么工程呢? 一定 要是语言c++___创建控制台应用程序___然后创建文件cpp源文件,然后 就是你的事情了,把代码输入进去
例如:
#include<stdio.h>
#include<string.h>
void main()
{
printf("nihao!");
getchar();
}
把上面 那些代码拷贝到刚创建的cpp文件上面去,然后按 ctrl + F5 编译执行,点是!,通过之后就会有像vc6.0里面一样的cmd框
以上都是我现在打上去了,不是其他地方拷贝的。特此声明。

⑦ 奇怪,用VS2008直接打开VC6.0做的工程文件可以编译运行,但要是用VS08新建一个工程然后把6.0的代码放进去

原因很简单,vs2008比vc6.0更先进些,就好比一个软件的2.0版本可以打开1.0版本下的文件,反过来却不行。vs2008的项目在vc6.0中打开时会有一些细节上的不同。会提示错误。

⑧ VS2008 C语言 编译与运行

使用VS2008创建C语言/C++工程,并编译运行调试,步骤如下:
1.打开VS2008
2.打开了VS2008的主界面,然后选择,文件→新建→项目
弹出如图对话框

这样工程就创建OK了,

调试快捷键是 F5

直接运行快捷键是 CTRL + F5

⑨ VS2008 VC++/MFC 出错LNK2001与1120

错误 LNK1120 为您提供该链接的无法解析的外部对象数 (number)。导致无法解析的外部对象的条件由错误 LNK2001 描述,此错误出现在该错误信息之前(对每个无法解析的外部对象都出现一次)。
//就是说每出现一次LNK1120都会在之前出现一个LNK2001
LNK2001
所以主要是解决LNK1120关键是要解决链接器工具错误 LNK2001 这分一下的情况(来自VS 2008的帮助),在这里我只复制一些比较常见的,如果还不行,你重建工程来吧~~

一、代码问题
1.如果 LNK2001 诊断文本报告 __check_commonlanguageruntime_version 是无法解析的外部符号,在 function 中找到了未定义的外部符号 (symbol)。若要解决此错误,请提供符号定义或移除引用它的代码。
2.成员模板的定义超出了类的范围。Visual C++ 的一个限制是,成员模板的定义必须完全位于封闭类内。
3.代码中大小写不匹配
4.如果项目使用函数内联,但在 .cpp 文件而非头文件中定义函数,则会导致 LNK2001。
5.试图引用没有外部链接的函数或数据会导致 LNK2001。
6.缺少函数主体或变量会导致 LNK2001。
7.调用参数类型与函数声明中的参数类型不匹配的函数会导致 LNK2001。名称修饰将函数参数合并到最终修饰函数名中。

8.错误包含的原型导致编译器需要没有提供的函数体,这样会导致 LNK2001。如果同时具有函数 F 的类实现和非类实现,请注意 C++ 范围解析规则。

9.在使用 C++ 时,将函数原型包含在类定义中但未能包含实现(该类的此函数的实现)会导致 LNK2001。

10.试图从抽象基类的构造函数或析构函数调用纯虚函数会导致 LNK2001。纯虚函数没有基类实现。

11.试图在函数范围外使用用该函数声明的变量(局部变量)会导致 LNK2001。

二、编译和链接问题
1.项目缺少对库 (.LIB) 或对象 (.OBJ) 文件的引用。有关更多信息,请参见用作链接器输入的 .lib 文件。

2.如果使用 /NODEFAULTLIB 或 /Zl,包含所需代码的库将不会链接到项目,除非已显式地包括了这些库。(在使用 /clr 或 /clr:pure 进行编译时,您将看到对 .cctor 的引用;有关更多信息,请参见 混合程序集的初始化。)

3.如果正在使用 Unicode 和 MFC,如果没有创建 wWinMainCRTStartup 的入口点,将在 _WinMain@16 上得到无法解析的外部对象;请使用 /ENTRY。请参见 Unicode 编程摘要。

4.将用 /MT 编译的代码与库 LIBC.lib 链接会在 _beginthread、_beginthreadex、_endthread 和 _endthreadex 上导致 LNK2001。

5.链接需要多线程库的代码(任何 MFC 代码或用 /MT 编译的代码)会在 _beginthread、_beginthreadex、_endthread 和 _endthreadex 上导致 LNK2001。有关更多信息,请参见下列知识库文章:

6.在用 /MD 进行编译时,因为所有的运行时现在都存放在一个 DLL 中,所以源中的“func”引用在对象中变为“__imp__func”引用。如果试图与 LIBC.lib 或 LIBCMT.lib 静态库链接,则将在 __imp__func 上得到 LNK2001。当不用 /MD 进行编译时,如果试图与 MSVCxx.lib 链接,则并非总是得到 LNK2001,但可能会有其他问题。

7.在生成应用程序的调试版本时与发布模式库链接会导致 LNK2001。同样,使用 /Mxd 选项(/MTd 或 /MDd)和/或定义 _DEBUG,然后再与版本库链接,将可能会产生无法解析的外部对象(同时还会出现其他问题)。将发布模式生成与调试库链接同样会导致类似问题。

8.将 Microsoft 库版本和编译器产品版本混合可能会有问题。新编译器版本的库可能包含早期版本的库中没有的新符号。可能需要更改搜索路径中的目录顺序,或将它们更改为指向当前版本。

9.使用库文件选择下的“工具”|“选项”|“项目”|“VC++ 目录”对话框,可以更改搜索顺序。项目的“属性页”对话框中的“链接器”文件夹可能也包含可能已过期的路径。

10.当安装了新的 SDK(可能在不同的位置),但没有将搜索顺序更新为指向新位置时,可能会出现此问题。通常情况下,应将新 SDK 的 include 目录和 lib 目录的路径放在默认 Visual C++ 位置的前面。另外,包含嵌入路径的项目可能仍然指向旧路径,这些路径是有效的,但对于安装到不同位置的新版本所添加的新功能已过期。

11.编译器供应商之间、甚至同一编译器的不同版本之间当前没有 C++ 命名标准。因此,链接用其他编译器编译的对象文件可能无法生成相同的命名方案,从而导致错误 LNK2001。

12.在不同模块上混合内联和非内联编译选项会导致 LNK2001。如果创建 C++ 库时打开了函数内联(/Ob1 或 /Ob2),但描述函数的相应头文件的内联是关闭的(没有 inline 关键字),则将发生此错误。若要防止此问题,请在要包含到其他文件中的头文件中用 inline 定义内联函数。

13.如果使用 #pragma inline_depth 编译器指令,请确保具有 设置为 2 或更大的值,并确保使用 /Ob1 或 /Ob2 编译器选项。

14.在创建纯资源 DLL 时省略 LINK 选项 /NOENTRY 将导致 LNK2001。

15.使用不正确的 /SUBSYSTEM 或 /ENTRY 设置会导致 LNK2001。例如,如果编写基于字符的应用程序(控制台应用程序)并指定 /SUBSYSTEM:WINDOWS,您将得到无法解析的 WinMain 外部对象。有关这些选项和入口点的更多信息,请参见 /SUBSYSTEM 和 /ENTRY 链接器选项。
初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为:
unresolved external symbol “symbol”(不确定的外部“符号”)。
如果连接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误消息。一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在、拼写不正确或者使用错误;其次可能使用了不同版本的连接库。
以下是可能产生LNK2001错误的原因:
一.由于编码错误导致的LNK2001。
1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如, 如果在C++ 源文件内声明了一变量“var1”,却试图在另一文件内以变量“VAR1”访问该变量,将发生该错误。
2.如果使用的内联函数是在.CPP文件内定义的,而不是在头文件内定义将导致LNK2001错误。
3.调用函数时如果所用的参数类型同函数声明时的类型不符将会产生LNK2001。
4.试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001。
5.要注意函数和变量的可公用性,只有全局变量、函数是可公用的。 静态函数和静态变量具有相同的使用范围限制。当试图从文件外部访问任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001。
函数内声明的变量(局部变量) 只能在该函数的范围内使用。
C++ 的全局常量只有静态连接性能。这不同于C,如果试图在C++的多个文件内使用全局变量也会产生LNK2001错误。一种解决的方法是需要时在头文件中加入该常量的初始化代码,并在.CPP文件中包含该头文件;另一种方法是使用时给该变量赋以常数。
二.由于编译和链接的设置而造成的LNK2001
1.如果编译时使用的是/NOD(/NODEFAULTLIB)选项,程序所需要的运行库和MFC库在连接时由编译器写入目标文件模块, 但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。在这种情况下使用/NOD将导致错误LNK2001。
2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时将得到“unresolved external on _WinMain@16”的LNK2001错误信息。
3.使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func” 的引用。如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行连接,将在__imp__func上发生LNK2001;如果不使用/MD选项编译,在使用MSVCxx.LIB连接时也会发生LNK2001。
4.使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001。
5.当编译调试版的应用程序时,如果采用发行版模态库进行连接也会产生LNK2001;同样,使用调试版模态库连接发行版应用程序时也会产生相同的问题。
6.不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。
7.在不同的模块使用内联和非内联的编译选项能够导致LNK2001。如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头文件里却关闭了函数内联(没有inline关键字),这时将得到该错误信息。为避免该问题的发生,应该在相应的头文件中用inline关键字标志内联函数。
8.不正确的/SUBSYSTEM或/ENTRY设置也能导致LNK2001。
其实,产生LNK2001的原因还有很多,以上的原因只是一部分而已,对初学者来说这些就够理解一阵子了。但是,分析错误原因的目的是为了避免错误的发生。LNK2001错误虽然比较困难,但是只要注意到了上述问题,还是能够避免和予以解决的。

阅读全文

与vs2008编译VC运行时库相关的资料

热点内容
jtbcphp 浏览:337
编程时遇到源代码未编译如何处理 浏览:431
绿源app怎么查看绑定系统 浏览:357
qq里的压缩文件怎么保存 浏览:349
伤寒论桂林pdf 浏览:684
树洞app怎么搜索好友 浏览:217
冷库压缩机如何注油 浏览:641
无线wifi怎么加密呢 浏览:432
linuxjava配置环境变量 浏览:702
rust服务器怎么下载地图 浏览:831
程序员那么可爱被误会的片段 浏览:39
好玩免费的服务器地址 浏览:344
vb脚本编译 浏览:18
单片机led显示数字 浏览:379
vim编译器是什么 浏览:385
ava程序员面试标准 浏览:791
安卓原生系统状态栏编译美化 浏览:64
java线程是什么意思 浏览:710
如何查看服务器的外网ip地址 浏览:721
命令方块放置方块 浏览:367