c++ 调用dll

1.首先写一个dll程序并且输出成dll. 新建win32项目,然后在应用程序类型中选择dll.

HelloDll.h:

#pragma once

#ifndef MYDLL_API_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
extern "C" MYDLL_API void sayHello();

HelloDll.cpp

// HelloDll.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "HelloDll.h"
#include "iostream"

MYDLL_API void sayHello()
{
    std::cout << "hello world";
}

2.新建一个控制台应用程序,将之前生成的dll放在调用程序生成的目录里,然后就可以在程序中如下面这样调用这个dll

ConsoleApplication1:

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<Windows.h>
#include "iostream"
typedef void(*funcptr)();
int main()
{
    using namespace std;
    const char* dllName = "HelloDll.dll";
    const char* funcName = "sayHello";
    HMODULE hDLL = LoadLibrary(_T(dllName));
    if (hDLL != NULL)
    {
        funcptr func = (funcptr)GetProcAddress(hDLL, funcName);
        if (func != NULL)
        {
            (*func)();
        }
        else
        {
            std::cout << "Cannot Find Function " << funcName << std::endl;
        }
    }
    else
    {
        std::cout << "Cannot Find " << dllName << std::endl;
    }
    getchar();
    return 0;
}

运行输出结果: Hello World

时间: 2024-08-08 09:41:34

c++ 调用dll的相关文章

C++ 生成 dll 和调用 dll 的方法实例(转)

1)生成dll 建立两个文件 xxx.h , xxx.cpp xxx.h内容如下: #ifdef BUILD_XXX_DLL#define EXPORT __declspec(dllexport)#else#define EXPORT __declspec(dllimport)#endif extern "C"{EXPORT void example(void);... ...} xxx.cpp内容如下: #define BUILD_XXX_DLL#include "xxx.

?c++ 调用DLL函数,出现错误

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 错误原因

Java 调用 C++ (Java 调用 dll)康哥手把手教你

因为要做点图形处理的项目,需要在Java中调用dll库,所以开发的第一步是研究了一下Java Jni的使用方法.突然发现Android Jni 使用跟这个好像(麻蛋,不就是一样的吗,但是Android中需要使用so动态链接库). 第一步 创建Java工程,命名JniDemo,添加JniDemo.java 第二步 在Java类中添加native方法 /** * @author Baokang */ public class JniDemo{ public native static void se

php调用dll经验小结

最近做一个网站,需要频繁使用远程数据,数据接口已经做好.在做转换的时候遇到了性能上的问题:开始打算用php来实现转换,苦苦查了数天,都没有找到直接操作字节的方法.虽然可以使用 pack() 方法将各个数据压入结构中,但是在解压的时候却不能通过 unpack() 简单的解出来,需要通过 //php code for( $i = 0; $i < $length; $i+=2 ){ $tempstr = $tempstr.chr( hexdec(substr($array["data"

delphi编写与调用DLL(delphi7下测试通过)

http://blog.sina.com.cn/s/blog_4dbbf76f01000anz.html 1 delphi编写DLL 2 下面在delphi中编写一个简单的dll,在该dll中只有一个max函数,返回2个数中的大数(Delphi 5.0) 3 1.New->DLL;取名为DLL_0001,编写代码: 4 library dll_0001; 5 uses 6 SysUtils, 7 Classes; 8 {$R *.RES} 9 function max(x,y:integer):

Windows平台Go调用DLL的坑

最近的项目中,使用了GO来开发一些服务中转程序.业务比较简单,但是有一些业务需要复用原有C++开发的代码.而在WINDOWS,用CGO方式来集成C/C++代码并不是太方便.所以用DLL把C++的代码封装起来,然后提供基本的API来完成复用.在这个过程中遇到了一些问题及解决方法,记录下来,也给遇到类似或者同样问题的人一个借鉴. 如果你还不清楚怎么在GO中调用DLL,可以参考这篇文章<WindowDLLs>. Callback的限制 在WINDOWS下调用一些API时会要求传入回调函数,在C/C+

Sql Server 调用DLL

原文:Sql Server 调用DLL 背景 在处理数据或者分析数据时,我们常常需要加入一定的逻辑,该些处理逻辑有些sql是可以支持,有些逻辑SQL则无能为力,在这种情况下,大多数人都会编写相关的程序来处理成自己想要的数据,但每次处理相同逻辑时,都需要运行一次程序非常麻烦. 案例 IE地址栏上的地址在记入日志表中时,其数据是通过编码的,如果我们想要看到明文,则需要相应的解码,可以用SQL语句来实现,如: 摘自:http://blog.csdn.net/ruijc/article/details/

WIN7+VS2010 制作与调用DLL

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 嗯哼~之前帮老师做的那个模块,不用做了=  =. 做了近十天,结果跑了13分钟 人家,秒级别的,甚至毫秒级的速度.... 哎.... 跪拜ING,2000+ X 2000+阶矩阵,有乘法,点乘,转置,求逆,一系列操作, 而且,乘法至少要进行40+次,求逆也要进行

c++/c语言中如何调用DLL

参考网站如下: ?http://blog.csdn.net/yusongwhu/article/details/7577461 http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html 具体内容如下: (1)篇? 今天在研究怎么在vc中调用动态dll的问题,看了一个下午,总算有些眉目. 首先来说说调用的原理: 调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同

SQLSERVER调用DLL程序

在SQL Server中调用dll分为两个步骤 1.创建一个dll文件(dll文件分成3种类型,讲其中一种) 2.把dll文件放进SQL Server的程序集中.然后定义一个Function,就可以通过该Function来引用dll中的函数. 1创建一个dll文件 1.1点击“文件”->“新建”->“项目”->类库,把命名空间改成TestDLL,添加如下代码 (框架必须改为.NET3.5及3.5以下,因为SQL Server 2008只是支持.NET 3.5及一下,.NET 4.0是20