|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
如何把c++文件編譯成.dll文件?
如何把c++文件編譯成.dll文件?
命令怎樣寫? |
如何把c++文件編譯成.dll文件?
在置頂的FAQ中有 |
如何把c++文件編譯成.dll文件?
| 如何把c++文件編譯成.dll文件?
o? FAQ? 赫赫,你去拿 FAQ 中的那個例子去編譯一個 c++ 的程序試試,看看能不能用。
不要把什麼都往 FAQ、精華 推。看清主題,他問的是 c++ 編譯成動態庫。
要把 c++ 的程序編譯成動態庫關鍵的地方在於要使用 extern "C" 來聲明函數原型。
程序1 s.cpp
代碼:
[code]
extern "C"
{
int soTest(int a,int b) ;
}
int soTest(int a,int b)
{
return a+b;
}
[/code]
編譯:
[code]
g++ -c s.cpp
g++ -fPIC -shared -o s.so s.o
[/code]
程序2 t.cpp
代碼:
[code]
#include <stdio.h>;
#include <stdlib.h>;
#include <dlfcn.h>;
int main(int argc, char **argv)
{
void *handle;
int (*soTest)(int,int);
char *error;
handle = dlopen ("./s.so", RTLD_LAZY);
if (!handle)
{
fprintf (stderr, "%s\n", dlerror());
exit(1);
}
(void *)soTest = (int (*)(int,int))dlsym(handle, "soTest");
if ((error = dlerror()) != NULL)
{
fprintf (stderr, "%s\n", error);
exit(1);
}
printf ("%d\n", (*soTest)(2,3));
dlclose(handle);
return 0;
}
[/code]
編譯:
[code]
g++ -c t.cpp
g++ -rdynamic -s -o t t.o -ldl
[/code]
運行:
[code]
./t
[/code]
[/code] |
如何把c++文件編譯成.dll文件?
我希望精華和FAQ可以解決大家多數情況下的問題
這樣就用再在這等回答了
當然這個題目沒有細看
很報歉 |
如何把c++文件編譯成.dll文件?
建議改進一下 FAQ 部分。應該單獨針對這部分作整理,不應該還是像論壇一樣一篇篇的出現,不便於查找和瀏覽。
應該分類進行管理,首先出現常見問題的標題列表,最好還有分類。標題要簡潔鮮明突出。不要一篇文章講一堆,換成你你也不情願一個字一個字看過去吧?赫赫。還有搜索功能,應當作一個搜索針對這些 FAQ 而不是搜索整個論壇。還有能不能不叫 FAQ 換成 "常見問題與解答" 是不是更容易讓別人理解,應該先到這裡看看。 別忘了我們是中國人,還有很多初學者並不知道 FAQ 是什麼意思。 |
如何把c++文件編譯成.dll文件?
關注! |
如何把c++文件編譯成.dll文件?
我會整理的 |
如何把c++文件編譯成.dll文件?
-->
同意! |
| |