藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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文件?

-->

同意!



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com