‘壹’ 将A.cs文件编译成.dll文件
我不知道啊,你加油。。。解决了告诉我\(^o^)/~哎呀,好麻烦无法加载 DLL“MasterRD.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
‘贰’ C语言程序怎么编译成dll文件供其他语言调用
C程序编译成dll文件只不过是在要公开的接口函数声明前面加上几个特定的修饰符而已。
下面是个例子,用dev-cpp建了个dll的默认文档
/*dll.h文件*/
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
DLLIMPORT void HelloWorld (void);
#endif /* _DLL_H_ */
/*dllmain.c文件*/
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!/n", "Hi", MB_ICONINFORMATION);
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
具体请参考jilei08124的CSDN博客
‘叁’ 如何编译生成dll文件以及如何调用dll文件
1.vs2015下生成DLL文件
文件->新建->项目
点击确定选择dll选项和空项目选项
点击完成
为项目添加c++源文件mydll.cpp
[cpp] view plain
在CODE上查看代码片派生到我的代码片
extern "C" // 此处extern "c" 为解决c/c++兼容问题
{
_declspec(dllexport)int add(int a, int b)
{
return a + b;
}
extern "C"
{
_declspec(dllexport)int sub(int a, int b)
{
return a - b;
}
}
编译生成 成功后会在工程根目录生成Win32Project1.dll文件
2.对dll文件的调用
显示调用动态链接库
新建C++工程
把生成的 Win32Project1.dll 文件拷贝到 刚才新建的工程目录下
在工程中新建源文件写入代码为
[cpp] view plain
在CODE上查看代码片派生到我的代码片
#include<iostream>
#include<windows.h>
void main()
{
HINSTANCE mydll = LoadLibrary("Win32Project1.dll"); //载入dll文件
if (mydll == NULL)
{
return;
}
int(*add)(int, int) =( int (*)(int ,int )) GetProcAddress(mydll, "add");//获取函数指针
/*
等价于
typedef int(*myadd)(int, int); //给 函数指针int (*)(int, int ) 取别名 myadd
myadd a = (myadd) GetProcAddress(mydll,"add"); //获取函数地址
*/
if (add == NULL)
{
return;
}
std::cout << add(1, 2);
std::cin.get();
}
编译并运行即可。
‘肆’ 求编译成DLL的方法或者帮编译一下
但是想在我的项目里使用这些控件
‘伍’ R语言可以生成dll文件吗。我想实现VB和R的接口。求大神解答。
R语言是脚本语言,它是解释性语言,没有编译器,不能编译成exe或DLL的.
当然,有一种方法可以简单实现你的功能,就是用VB运行R语言,结果的传输可通过文件实现
‘陆’ 在怎样情况下把代码编译成dll文件
如果使用的是VS,可以进行如下操作:
打开VS, 文件-新建-新建项目-其他语言-Visual C++ - Win32 控制台应用程序。
单击确定后,弹出对话框,按照对话框“下一步”提示进行操作。
将要编译的C文件拷贝到CreateDLL项目中,.h文件就放到头文件夹的目录下,.c文件放到源文件目录下,注意后缀名为.c的文件都要改成.cpp,否则编译会出错。
注意:申明函数时必须参照上图红框标示出来的规则,在Function.cpp文件中必须要引入对应的#include CreateDLL.h。
选中所有需要编译成dll的cpp文件,右键-属性-预编译头-不使用预编译头,然后选择 “生成”即可,这样在项目的Debug文件夹下面便可找到CreateDLL.dll文件
‘柒’ R语言编译动态库
编译成DLL C++就可以调用了
‘捌’ 为何无法编译成dll文件
你好,无论是用 VB 还是 VJ++,在编译 Active dll 文件时都会发现无法重新编译成 dll 文件的问题。原因是第一次编译后 dll
文件已经被自动注册了。这时关闭 Web server 后即可再次编译,待编译完毕后再打开 Web server。
‘玖’ 查看R语言中dll文件中的代码
dll文件是编译好的,不再存在源代码了。不过R语言是开源的,如果要阅读源代码,要专门去下载R语言的源代码。
比如
http://cran.cnr.berkeley.e/src/base/R-3/R-3.3.2.tar.gz
‘拾’ 如何编译生成dll
使用VC下的cl和link手工创建dll并实现函数导入
1、创建dll头文件:
/*
* dllmain.h
*/
#ifndef _DLLMAIN_H
#define _DLLMAIN_H
int getNumber();
#endif
2、创建dll源文件:
/*
* dllmain.c
*/
#include "dllmain.h"
int getNumber()
{
return 10;
}
3、 创建def文件:
; export.def
LIBRARY MY_DLLMAIN ; MY_DLLMAIN 将成为生成的dll的名称
EXPORTS
getNumber @1 ; 这个名称即为函数的实际导出名称 @1为函数的导出编号
4、生成dll文件:
cl dllmain.c /c
link /def:export.def /dll dllmain.obj
这时,工程中已经包含了 dllmain.h dllmain.c export.def dllmain.obj dllmain.lib dllmain.exp MY_DLLMAIN.dll 其中,后4个文件是编译链接过程中生成的文件
5、创建dlltest.c:
/*
* dlltest.c
*/
#include <stdio.h>
#include "dllmain.h" //dll库的头文件
#pragma comment(lib,"dllmain.lib") //dllmain.lib即是上一步生成的文件
int main()
{
printf("%dn",getNumber());
}
6、编译、链接dlltest.c
cl dlltest.c /c
link dlltest.obj
注意:这里dllmain.lib和dllmain.h应该和dlltest.c在同一个目录中。此步的结果将生成 dlltest.exe
7、运行:
dlltest
这时,系统将载入my_dllmain.dll这个动态链接库,将调用其中的getNubmer函数。