vs常规项目编译dll
A. 如何在VS2013配置CUDA,并编译生成DLL
项目属性-配置属性-常规-MFC的使用-使用标准Windows库(不用MFC)
然后,C/C++-代码生成-运行库-多线程/MT或者多线程调试/MTd
带d的是链接调试版本,DEBUG项目选/MTd,Release项目选/MT
如果使用MFC,在MFC的使用中设置静态、动态链接,代码生成中必须使用<从上级继承>
B. 我在VS2017里面用C#在.net framework上编写了一个dll,我想编译,怎么解决
您的编译已经完成了。在debug或者release文件夹下可以看到.dll文件(也可能会有xml文件),但是这是一个类库,本身是不能直接运行的,所以在VS中使用“运行”(F5)会弹出这样的提示。如果您想要调试这个类库,请在解决方案下添加一个新的项目,引用这个类库项目,然后进行测试。
C. 用VS 如何由源代码生成DLL文件
1:创建DLL工程
文件->新建->项目->visual c++->win32->win32控制台应用程序(win32项目也可以)
填写项目名称MyDLL->确定->下一步->DLL(附加选项 对空项目打钩)->完成。
到这里DLL工程就创建完毕了,下面新建两个文件MyDLL.cpp和MyDLL.h。
MyDLL.cpp内容如下:
testMyDLL.h内容如下
#pragmaonce
extern"C"_declspec(dllexport)intAdd(int&a,int&b);
现在可以编译通过了,但是程序运行就报错,还需要将MyDLL.dll复制到当前项目生成的可执行文件所在的目录。(这一点非常重要)
这里需要注意testMyDLL.cpp文件中调用lib的这句话:
#pragmacomment(lib,"..\debug\MyDLL.lib")
这里需要指明lib所在的文件夹,当然我们也可以在生成dll的MyDLL工程中,指定lib和dll文件的输出路径,直接到testMyDLL工程下。
注意:如果只有dll文件,那么必须在程序里面调用LoadLibrary()函数才能使用,如果有lib文件,那么有两种方式可以马上进行调用
D. 如何利用VS2005把一个公共的类编译成DLL
不能吧,只能新建一个类库项目,把你的公共类写在这个项目中编译后就会生成dll,然后别的项目可以引用这个类库
E. vs2010为什么设置了静态编译还是需要dll文件才能运行exe
静态编译:就是在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库。
编译方式:
第1种:
设置:
1、项目->配置属性->常规->MFC的使用:在静态库中使用MFC
2、项目 -> 配置属性->C/C++->代码生成->运行库 :选择 多线程调试(/MTd)。
编译时,选择的是debug,win32
然后执行编译生成方案,在该工程目录下的debug文件中,找到该.exe文件,即可在其他电脑运行。
第2种:
一般可以配置一下两项:
1.项目 -> 配置属性->常规->MFC的使用 :在静态库中使用MFC。
2.项目 -> 配置属性->C/C++->代码生成->运行库 :选择 多线程调试(/MT)。
编译时,选择的是release,win32(这个选择项在工具栏的debug选框中,一般我们使用debug方式)
F. vs2010怎么编译生成dll文件
可以在开始建立新项目的时候选择DLL类型进行编写
一般情况下有四种可选的类型:windows应用程序,控制台应用程序,DLL,静态库。
当完成DLL的编写之后,点击菜单栏【生成】->【生成解决方案】然后进入该解决方案源文件夹下找到bin->Debug会发现DLL文件已经生成。
G. vs2013怎么把多个dll文件打包成一个dll,使用的时候不再引用其他dll
项目--属性--配置属性--常规
MFC的使用,修改为:在静态库中使用MFC
就会把用到的DLL编译器来。
H. vs2013 c++ 怎么生成dll
1.建立一个C++的Win32DLL,这里要注意选择"Export symbols"导出符号。点击完成。如下图所示:
I. vs2010编译c的dll,在c++中调用问题
楼上说的很对,我在用java NDK 开发也是这样的问题,但是一样是用extern "C" 搞定,
贴段代码给你看看
#include<jni.h>
#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#include<android/log.h>
extern"C"
{
voidJava_com_example_jniopengl_MainActivity_go(JNIEnv*env,jobjectthiz);
}
void*run_by_thread(void*num)
{
int*nums=(int*)num;
intstatus=0;
for(inti=0;i<3;i++)
{
::sleep(1);
::__android_log_print(1,"go++","thread%d:_%d",*nums,i);
}
if(*nums==1)
{status=100;
return(void*)&status;
}
elseif(*nums==2)
{
status=200;
::pthread_exit((void*)&status);
}}
voidstart_threads()
{
pthread_tth1,th2;
intthreadNum1=1;
intthreadNum2=2;
intret=-1;
intre=::pthread_create(&th1,NULL,run_by_thread,(void*)&threadNum1);
re=::pthread_create(&th2,NULL,run_by_thread,(void*)&threadNum2);
void*status;
re=::pthread_join(th1,&status);
int*code=(int*)status;
__android_log_print(1,"code","code:%d ",*code);
re=::pthread_join(th2,&status);
int*code2=(int*)status;
__android_log_print(1,"code","code:%d ",*code2);
}
voidJava_com_example_jniopengl_MainActivity_go(JNIEnv*env,jobjectthiz)
{
start_threads();
}
J. 如何在VS2008中将类库编译成DLL文件
生成就可以了!