C++如何编译出DLL文件
我用易语言条用C++的DLL但是由于一些问题需要更改DLL中的回调函数名但是我没有接触过C++所以向高手求助具体如何更改回调函数名?如何写出DLL文件?...
我用易语言条用C++的DLL 但是由于一些问题需要更改DLL中的回调函数名但是我没有接触过C++ 所以向高手求助具体如何更改回调函数名?如何写出DLL文件?
展开
展开全部
如果使用的是VS,可以进行如下操作:
打开VS, 文件-新建-新建项目-其他语言-Visual C++ - Win32 控制台应用程序。
单击确定后,弹出对话框,按照对话框“下一步”提示进行操作。
将要编译的C文件拷贝到CreateDLL项目中,.h文件就放到头文件夹的目录下,.c文件放到源文件目录下,注意后缀名为.c的文件都要改成.cpp,否则编译会出错。
注意:申明函数时必须参照上图红框标示出来的规则,在Function.cpp文件中必须要引入对应的#include CreateDLL.h。
选中所有需要编译成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复制代码
不要把什么都往 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文件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |