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文件
生成就可以了!