C++如何编译出DLL文件

我用易语言条用C++的DLL但是由于一些问题需要更改DLL中的回调函数名但是我没有接触过C++所以向高手求助具体如何更改回调函数名?如何写出DLL文件?... 我用易语言条用C++的DLL 但是由于一些问题需要更改DLL中的回调函数名但是我没有接触过C++ 所以向高手求助具体如何更改回调函数名?如何写出DLL文件? 展开
 我来答
泪之梦幻
2015-08-22 · TA获得超过2211个赞
知道小有建树答主
回答量:304
采纳率:100%
帮助的人:57.1万
展开全部

如果使用的是VS,可以进行如下操作:

  1. 打开VS, 文件-新建-新建项目-其他语言-Visual C++  - Win32 控制台应用程序。

  2. 单击确定后,弹出对话框,按照对话框“下一步”提示进行操作。

  3. 将要编译的C文件拷贝到CreateDLL项目中,.h文件就放到头文件夹的目录下,.c文件放到源文件目录下,注意后缀名为.c的文件都要改成.cpp,否则编译会出错。

    注意:申明函数时必须参照上图红框标示出来的规则,在Function.cpp文件中必须要引入对应的#include CreateDLL.h。

  4. 选中所有需要编译成dll的cpp文件,右键-属性-预编译头-不使用预编译头,然后选择 “生成”即可,这样在项目的Debug文件夹下面便可找到CreateDLL.dll文件

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

程序1 s.cpp
代码:

extern "C"
{
int soTest(int a,int b) ;
}

int soTest(int a,int b)
{
return a+b;
} 复制代码

编译:
g++ -c s.cpp
g++ -fPIC -shared -o s.so s.o 复制代码

程序2 t.cpp
代码:

#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;
} 复制代码

编译:
g++ -c t.cpp
g++ -rdynamic -s -o t t.o -ldl复制代码

运行:
./t复制代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-16
展开全部
直接编译就有,导出干什么?编译以后在DEBUG目录下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-16
展开全部
用VC可以很容易可以写出DLL文件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式