免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9250 | 回复: 9
打印 上一主题 下一主题

[C++] 如何把c++文件编译成.dll文件? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-18 11:48 |只看该作者 |倒序浏览
如何把c++文件编译成.dll文件?
命令怎样写?

论坛徽章:
0
2 [报告]
发表于 2003-03-18 13:08 |只看该作者

如何把c++文件编译成.dll文件?

在置顶的FAQ中有

论坛徽章:
0
3 [报告]
发表于 2003-03-18 15:55 |只看该作者

如何把c++文件编译成.dll文件?

[quote]原帖由 "无双"]在置顶的FAQ中有[/quote 发表:


我没有看见我所要的
语法与例子

论坛徽章:
0
4 [报告]
发表于 2003-03-18 18:03 |只看该作者

如何把c++文件编译成.dll文件?

o? FAQ? 赫赫,你去拿 FAQ 中的那个例子去编译一个 c++ 的程序试试,看看能不能用。
不要把什么都往 FAQ、精华 推。看清主题,他问的是 c++ 编译成动态库。
要把 c++ 的程序编译成动态库关键的地方在于要使用 extern "C" 来声明函数原型。


程序1 s.cpp
代码:


  1. extern "C"
  2. {
  3.    int soTest(int a,int b) ;
  4. }

  5. int soTest(int a,int b)
  6. {
  7.    return a+b;
  8. }
复制代码


编译:

  1. g++ -c s.cpp
  2. g++ -fPIC -shared -o s.so s.o
复制代码



程序2 t.cpp
代码:


  1. #include <stdio.h>;
  2. #include <stdlib.h>;
  3. #include <dlfcn.h>;

  4. int main(int argc, char **argv)
  5. {
  6.    void *handle;
  7.    int (*soTest)(int,int);
  8.    char *error;

  9.    handle = dlopen ("./s.so", RTLD_LAZY);
  10.    if (!handle)
  11.    {
  12.       fprintf (stderr, "%s\n", dlerror());
  13.       exit(1);
  14.    }

  15.    (void *)soTest = (int (*)(int,int))dlsym(handle, "soTest");
  16.    if ((error = dlerror()) != NULL)
  17.    {
  18.       fprintf (stderr, "%s\n", error);
  19.       exit(1);
  20.    }

  21.    printf ("%d\n", (*soTest)(2,3));
  22.    dlclose(handle);

  23.    return 0;
  24. }
复制代码



编译:

  1. g++ -c t.cpp
  2. g++ -rdynamic -s -o t t.o -ldl
复制代码


运行:

  1. ./t
复制代码


[/code]

论坛徽章:
0
5 [报告]
发表于 2003-03-18 19:23 |只看该作者

如何把c++文件编译成.dll文件?

我希望精华和FAQ可以解决大家多数情况下的问题

这样就用再在这等回答了

当然这个题目没有细看

很报歉

论坛徽章:
0
6 [报告]
发表于 2003-03-19 00:54 |只看该作者

如何把c++文件编译成.dll文件?

建议改进一下 FAQ 部分。应该单独针对这部分作整理,不应该还是像论坛一样一篇篇的出现,不便于查找和浏览。
应该分类进行管理,首先出现常见问题的标题列表,最好还有分类。标题要简洁鲜明突出。不要一篇文章讲一堆,换成你你也不情愿一个字一个字看过去吧?赫赫。还有搜索功能,应当作一个搜索针对这些 FAQ 而不是搜索整个论坛。还有能不能不叫 FAQ 换成 "常见问题与解答" 是不是更容易让别人理解,应该先到这里看看。 别忘了我们是中国人,还有很多初学者并不知道 FAQ 是什么意思。

论坛徽章:
0
7 [报告]
发表于 2003-03-19 10:27 |只看该作者

如何把c++文件编译成.dll文件?

关注!

论坛徽章:
0
8 [报告]
发表于 2003-03-19 12:46 |只看该作者

如何把c++文件编译成.dll文件?

我会整理的

论坛徽章:
0
9 [报告]
发表于 2003-03-19 12:52 |只看该作者

如何把c++文件编译成.dll文件?

原帖由 "star3s" 发表:
建议改进一下 FAQ 部分。应该单独针对这部分作整理,不应该还是像论坛一样一篇篇的出现,不便于查找和浏览。
应该分类进行管理,首先出现常见问题的标题列表,最好还有分类。标题要简洁鲜明突出。不要一篇文章讲一?.........


同意!

论坛徽章:
0
10 [报告]
发表于 2013-05-30 19:55 |只看该作者
本帖最后由 无双遗臭万年了 于 2013-05-30 19:59 编辑

+1 同意。 star3s 的解答很体面。



总存在这一类人,头上写着"高手"两字。

10年过去了,看到后仍令人“膜拜”啊,

建议“置顶的FAQ”,仅因为许多新手也有同样的疑惑,帖子查看量告诉我的。)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP