㈠ c语言 用vs2010编写dll 应该建立什么工程啊如果需要下载工具包的话 去哪下载
不需要下载工具
只要你电脑安装了framework即可
使用csc工具
命令csc
File.cs
编译
File.cs
以产生
File.dll
主要要切换到目标的文件路径
如果csc不可以使用
就把csc添加到环境变量(新建path
填入路径为值)
㈡ c语言怎么调用dll文件
1、新建DLLTest文件夹,在该文件夹中新建source文件夹。
注意事项:
C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
㈢ 怎么在C#中添加用C语言开发的动态链接库dll文件(vs2010)
总体来说,有两种调用动态连接库的方法
(事实上,是有两种从managed code调用unmanaged code的方法)
一种使用Attribute,即
[DllImport("SomeDll.dll")]
static extern int SomeFunctionInDll(string filename, uint PageNo);
需引用命名空间
using System.Runtime.InteropServices;
另一种方法是采用COM方法,现倒入COM组件的类型库,(Menu:Project/Add Reference)
然后直接去new对象,调用其方法既可。
需要先注册
我用的大多都是c++的dll,c的木有试过,估计原理也是这样子
希望对你有帮助,O(∩_∩)O~
㈣ 用C语言编写DLL
使用微软的vc或者vs,用c语言编程就是了。创建工程的时候会问你是创建什么样的工程,比如控制台程序,mfc程序,动态库(dll)等。
c和c++只是编程语言,动态库依赖于操作系统,在哪个平台下就依赖于哪个平台的动态库生成工具。linux下是so文件,用gcc编译器就可以生成。
㈤ 请问为什么我用VS2015编程C语言调试的时候总是不成功,出现无法加载 mspdb140.dll
1. 找到VS2015 IDE的安装目录,以本人电脑上的目录为例: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
2.将IDE目录中的msobj140.dll, mspdb140.dll, mspdbcore.dll, mspdbsrv.exe四个文件复制到VC的bin目录下覆盖原有文件,以本人电脑为例VC/bin的目录为:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
3.打开VS2015 新建一个C++的win32 控制台程序试一下是否还出现Link1171错误
4.如果还出现这个错误,请将VC/bin目录加入到系统环境变量Path中用分号隔开,重启计算机。
㈥ VS2015编辑C语言时出现这个,KernelBase.dll,已经设置了工具的选项,启用了服务器支持和符号服务器
像这种情况,先看项目名称如:测试。exe
再看执行命令如:已加载或已卸载
再看文件路径如:C:windowssyswow64kernelbase.dll
最后看后面的进程提示如:已加载符号或无法查找或打开PDB文件
最后的一般都是执行结果和问题反馈
㈦ vs2010编的C语言程序,生成了可执行文件,可是为什么在其他电脑上却不能打开。提示是找不到MVCR.dll......
所有Visual Studio编译的程序,只要你用到了C Runtime库的函数,比如printf等最基本的标准函数,就会链接MSVCRxx.dll,里面的xx是你编译的Visual Studio的版本号。现在的问题就是你用的VS2010,很多计算机上没有这个DLL,即使你编译成Release版本(Debug版本需要更多的库支持),依然会出现运行不了的情况。解决办法是你可以静态链接这些库,这样就不需要DLL支持,或者你让目标计算机安装Visual Studio 2010 Redistribute Package,这个包包含了VS2010编译出来的程序需要的库。
Redistribute Package的下载:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=a7b7a05e-6de6-4d3a-a423-37bf0912db84
简短描述
Microsoft Visual C++ 2010 Redistributable Package 安装 Visual C++ 库的运行时组件,使用户能够在未安装 Visual C++ 2010 的计算机上运行使用 Visual C++ 开发的应用程序。
㈧ C语言vs怎么使用自己做的静态库与动态库,本人小白,请求详解
1.静态链接库
打开VS2010,新建一个项目,选择win32项目,点击确定,选择静态库这个选项,预编译头文件可选可不选。
在这个空项目中,添加一个.h文件和一个.cpp文件。名字我们起为static.h和static.cpp
static.h文件:
[cpp]view plain
#ifndefLIB_H
#defineLIB_H
extern"C"intsum(inta,intb);
#endif
- static.cpp文件:
#include"static.h"
intsum(inta,intb)
{
returna+b;
}
- 编译这个项目之后,会在debug文件夹下生成static.lib文件,这个就是我们需要的静态链接库。
#include<stdio.h>
#include<stdlib.h>
#include"static.h"
#pragmacomment(lib,"static.lib")
intmain()
{
printf("%d ",sum(1,2));
system("pause");
return0;
}
- 编译运行可得结果:3
#ifndefDYNAMIC
#defineDYNAMIC
extern"C"__declspec(dllexport)intsum(inta,intb);
#endifDYNAMIC
#include"dynamic.h"
intsum(inta,intb)
{
returna+b;
}
- 编译这个项目,会在debug文件夹下生成dynamic.dll文件。
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include"dynamic.h"
intmain()
{
HINSTANCEhDll=NULL;
typedefint(*PSUM)(inta,intb);
PSUMpSum;
hDll=LoadLibrary(L"dynamic.dll");
pSum=(PSUM)GetProcAddress(hDll,"sum");
printf("%d ",pSum(1,2));
system("pause");
FreeLibrary(hDll);
return0;
}
- 编译运行结果为:3
[cpp]view plain
下面说明如何调用静态链接库。
首先需要新建一个空项目,起名为test。将之前static项目下的static.h和static.lib这个2个文件复制到test项目的目录下,并在工程中加入static.h文件。
新建一个test.cpp文件如下:
[cpp]view plain
#pragma comment(lib,"static.lib"),这一句是显式的导入静态链接库。除此之外,还有其他的方法,比如通过设置路径等等,这里不做介绍。
2.动态链接库
和创建静态链接库一样,需要创建一个空的win32项目,选择dll选项。创建dynamic.cpp和dynamic.h文件
dynamic.h文件:
[cpp]view plain
dynamic.cpp文件:
[cpp]view plain
下面介绍如何调用动态链接库,这里讲的是显式的调用。
在刚才的test项目下,把static.lib和static.h文件删除,把dynamic.h和dynamic.dll复制到该目录下,并在项目中添加dynamic.h文件,修改test.cpp文件为:
[cpp]view plain
特别提示:
1.extern "C"中的C是大写,不是小写
2.如果从VS2010中直接运行程序,lib和dll需要放到test项目的目录下;如果想双击项目test下的debug文件中的exe文件直接运行的话,需把lib和dll放入debug文件夹下。
㈨ vs2005,vs2008,vs2010编译同一个c语言项目生成的dll文件为什么不一样大分别是252,380,246KB
优化方式和程度不有
不同的
编译器
用的是可能是不同的优化方案(同一个编译器不同的设置也会产生不同的结果,比如DeBug和Release)
优化方案取决于编译器开发者的水平.发行编译器时的
主流CPU
和编译器将要运行的系统平台等因素,
比如DOS时代int_max=0xffff,
win32
时代int_max=0xffffffff,同样是int变量,所占用的内存空间就不同
再如同样一条C语句:x=x+1;
早期的编译器可能编译成类似这样的结果(这里用结果一词而不用汇编语言,
汇编指令
,汇编代码之类的词是因为汇编=!
机器指令
)
mov
eax,x
add
eax,0x00000001
mov
x,eax
而优化的编译器可能会把这条语句编译成和
x+=1;
同样的编译结果:
mov
eax,x
inc
eax
//这条指令的执行速度和占用内存的空间都要小
mov
x,eax
///////////////////////////////////////////////////////////////
类似的情况还有很多,因为这个回答是我一个字一个字打出来的,不是在哪个地方Copy的,指所以就不一一列举了,总之:
这些小的差别积少成多,就影响了文件的大小!
㈩ 怎么在C#中添加用C语言开发的动态链接库dll文件(vs2010)
在c#类里添加[DllImport("dll名.dll")]即可:
比如我用c开发了一个testdll.dll的dll文件,则我在c#类的构造函数前可以添加[DllImport("testdll.dll")],就把c开发的动态链接库添加进了c#项目里。