标题:C调用VC++6.0封装的DLL
只看楼主
Apollo_c
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-3-3
结帖率:100%
已结贴  问题点数:5 回复次数:17 
C调用VC++6.0封装的DLL
VC++6.0做的BAC.dll,现在要在C中调用
1、C中应该怎样调用dll?

2、dll函数声明(部分)如下:
#define IMPORT_TYPE extern "C" _declspec(dllimport)

//已知压力(MPa),求对应饱和温度(℃)
IMPORT_TYPE void _stdcall P2T97(double P,double & T,int & Range);
//已知压力(MPa),求对应饱和水比焓(kJ/kg)
IMPORT_TYPE void _stdcall P2HL97(double P,double & H,int & Range);
怎样调用DLL中的函数?
我给定一个压力P,希望求出温度T。
搜索更多相关主题的帖子: double 
2017-03-03 15:30
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:2 
不清不楚的

如果你用的是C语言,编译
程序代码:
#include <stdio.h>

#pragma comment( lib, "BAC.lib" )
_declspec(dllimport) void _stdcall P2T97 ( double P, double* T, int* Range );
_declspec(dllimport) void _stdcall P2HL97( double P, double* H, int* Range );

int main( void )
{
    double p = 0.1;
    double t; int trange;
    double h; int hrange;

    P2T97( p, &t, &trange );
    P2T97( p, &h, &hrange );

    printf( "%f, %d\n", t, trange );
    printf( "%f, %d\n", h, hrange );

    return 0;
}
若有错误,将错误信息贴出来

如果你用的是C++语言,编译
程序代码:
#include <cstdio>

#pragma comment( lib, "BAC.lib" )
extern "C" _declspec(dllimport) void _stdcall P2T97 ( double P, double& T, int& Range );
extern "C" _declspec(dllimport) void _stdcall P2HL97( double P, double& H, int& Range );

int main( void )
{
    double p = 0.1;
    double t; int trange;
    double h; int hrange;

    P2T97( p, t, trange );
    P2T97( p, h, hrange );

    printf( "%f, %d\n", t, trange );
    printf( "%f, %d\n", h, hrange );

    return 0;
}
若有错误,将错误信息贴出来
2017-03-03 15:49
Apollo_c
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-3-3
得分:0 
首先非常感谢rjsp版主。
我只有一个dll文件和相关的函数说明哦,没有lib文件。DLL文件是用VC++6.0封装的,现在在C里调用。
代码编译还有很多错误哦,会是什么问题?
2017-03-03 17:40
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
能把DLL发上来吗

DO IT YOURSELF !
2017-03-03 19:09
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
只有dll,可用LoadLibrary和GetProcAddress动态调用。
2017-03-03 20:49
Apollo_c
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-3-3
得分:0 
以下是引用wp231957在2017-3-3 19:09:44的发言:

能把DLL发上来吗

BAC.rar (92.82 KB)
2017-03-04 08:44
Apollo_c
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-3-3
得分:0 
以下是引用吹水佬在2017-3-3 20:49:10的发言:

只有dll,可用LoadLibrary和GetProcAddress动态调用。

你好,能不能具体说说,对C不熟悉。有没有相关的例程(通过测试的)供参考?
2017-03-04 08:46
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 6楼 Apollo_c
无法下载呢

DO IT YOURSELF !
2017-03-04 08:54
Apollo_c
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2017-3-3
得分:0 
以下是引用wp231957在2017-3-4 08:54:48的发言:

无法下载呢


你再看一下能不能下载,或者方便的话留个邮箱,我发给你也可以。
BAC.rar (92.82 KB)
  
2017-03-04 09:12
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
wp231957@    另: 还是无法下载

DO IT YOURSELF !
2017-03-04 09:19



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-474715-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.699407 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved