社区
进程/线程/DLL
帖子详情
为什么我的调用DLL会出错:(如解决,另送100分)
pearlriver
2003-09-12 09:45:59
我的dll使用的是,non-mfc dll,
采用的第三种方法生成类。
为什么我把头文件,lib,dll引用到了当前目录下。
为什么我的调用DLL会出错:提示
'Timer_Node' : 'struct' type redefinition
'CSd_Timer_Queue' : 'class' type redefinition
谁能告我,如解决,当以100分相送
...全文
107
5
打赏
收藏
为什么我的调用DLL会出错:(如解决,另送100分)
我的dll使用的是,non-mfc dll, 采用的第三种方法生成类。 为什么我把头文件,lib,dll引用到了当前目录下。 为什么我的调用DLL会出错:提示 'Timer_Node' : 'struct' type redefinition 'CSd_Timer_Queue' : 'class' type redefinition 谁能告我,如解决,当以100分相送
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LeeZi
2003-09-15
打赏
举报
回复
好在的一张空头支票。你开贴只有20分,说是给100分?呵呵呵。
好了,你这个问题是你的DLL的头文件引起的。
在头文件中加上
#ifndef __Sd_Timer_Queen_h__
#define __Sd_Timer_Queen_h__
//内容
#endif
pearlriver
2003-09-14
打赏
举报
回复
这是引用dll的 Sd_Timer_Queen.h ********************************************************************/
#ifdef SD_TIMER_QUEUE_EXPORTS
#define SD_TIMER_QUEUE_API __declspec(dllexport)
#else
#define SD_TIMER_QUEUE_API __declspec(dllimport)
#endif
SD_TIMER_QUEUE_API typedef struct Timer_Node //链表的定时器节点
{
unsigned int Nok; //定时器对应的关键帧序号
UINT_PTR Timer_k; //定时器的唯一id标志
struct Timer_Node * next; //定时器指针,指向下一个节点
} Tmr_Node;
// This class is exported from the Sd_Timer_Queue.dll
class SD_TIMER_QUEUE_API CSd_Timer_Queue {
private:
Tmr_Node * pHead; //定时器链表头
public:
CSd_Timer_Queue(void); //构造函数
virtual ~CSd_Timer_Queue(); //析构函数
};
*****************************************************************
这是使用dll的.h
#include "Sd_Timer_Queue.h"
class TestQueen
{
private:
CSd_Timer_Queue * CSd_Timer_Queue1;
public:
TestQueen(CSd_Timer_Queue * CSd_Timer_Queue2); //此函数会认为重复定义
virtual ~TestQueen();
void test1();
};
redby
2003-09-12
打赏
举报
回复
参考一下,这里没有引如lib库,直接调用dll
{//这里用的是WNASPI32.DLL 里面的函数
HINSTANCE hinstWNASPI32;
hinstWNASPI32 = LoadLibrary( "WNASPI32" );
if( !hinstWNASPI32 )
{
AfxMessageBox("Can Not Open WNASPI32!");
}
DWORD (*pfnGetASPI32SupportInfo)( void );
DWORD (*pfnSendASPI32Command)( LPSRB );
BOOL (*pfnGetASPI32Buffer)( PASPI32BUFF );
BOOL (*pfnFreeASPI32Buffer)( PASPI32BUFF );
BOOL (*pfnTranslateASPI32Address)( PDWORD, PDWORD );
pfnGetASPI32SupportInfo = (unsigned long (__cdecl *)(void))GetProcAddress( hinstWNASPI32, "GetASPI32SupportInfo");
pfnSendASPI32Command = (unsigned long (__cdecl *)(void*))GetProcAddress( hinstWNASPI32, "SendASPI32Command" );
pfnGetASPI32Buffer = (int (__cdecl *)(struct tag_ASPI32BUFF *))GetProcAddress( hinstWNASPI32, "GetASPI32Buffer" );
pfnFreeASPI32Buffer = (int (__cdecl *)(struct tag_ASPI32BUFF *))GetProcAddress( hinstWNASPI32, "FreeASPI32Buffer" );
pfnTranslateASPI32Address =(int (__cdecl *)(unsigned long *,unsigned long *)) GetProcAddress( hinstWNASPI32,"TranslateASPI32Address");
BYTE byHaCount;
BYTE byASPIStatus;
DWORD dwSupportInfo;
dwSupportInfo = pfnGetASPI32SupportInfo();
byASPIStatus = HIBYTE(LOWORD(dwSupportInfo));
byHaCount = LOBYTE(LOWORD(dwSupportInfo));
if( byASPIStatus != SS_COMP && byASPIStatus != SS_NO_ADAPTERS )
{ // Handle ASPI error here. Usually this involves the display
// of a dialog box with an informative message.
AfxMessageBox("ERROR!");
}
// DWORD dwMaxTransferBytes;
SRB32_HAInquiry srbHAInquiry;
memset( &srbHAInquiry, 0, sizeof(SRB32_HAInquiry) );
srbHAInquiry.SRB_Cmd = SC_HA_INQUIRY;
srbHAInquiry.SRB_HaId = 1;
pfnSendASPI32Command( (LPSRB)&srbHAInquiry );
if( srbHAInquiry.SRB_Status != SS_COMP )
{
// Error in HAInquiry. Most likely SS_INVALID_HA.
return 0;
}
// dwMaxTransferBytes = srbHAInquiry.HA_MaxTargets;
BYTE byHaId;
BYTE byTarget;
SRB32_GDEVBlock srbGDEVBlock;
intPhisicalDiskNum = 0;
for( byHaId = 0; byHaId <= intChannel; byHaId++ )
{
for( byTarget = 0; byTarget <=intDiskID; byTarget++ )
{
memset( &srbGDEVBlock, 0, sizeof(SRB32_GDEVBlock) );
srbGDEVBlock.SRB_Cmd = SC_GET_DEV_TYPE;
srbGDEVBlock.SRB_HaId = byHaId;
srbGDEVBlock.SRB_Target = byTarget;
pfnSendASPI32Command( (LPSRB)&srbGDEVBlock );
if( srbGDEVBlock.SRB_Status != SS_COMP ) continue;
if( srbGDEVBlock.SRB_DeviceType == DTYPE_DASD ) //DTYPE_DASD identify magnetic disk;
{
// A CD-ROM exists at HA/ID/LUN = byHaId/byTarget/0.
// Do whatever you want with it from here!
if ((byHaId == intChannel )&& (byTarget == intDiskID))
{
return 0;
}
intPhisicalDiskNum++;
//tmp.Format("Find A Disk At %d:%d:0 !",byHaId,byTarget);
//AfxMessageBox(tmp);
}
}
}
FreeLibrary(hinstWNASPI32);
return 1;
}
redby
2003-09-12
打赏
举报
回复
楼主 ,
把你的程序贴出看看,
akiko
2003-09-12
打赏
举报
回复
类型重复定义了,去掉多余的定义
全面解析msvcr
100
.
dll
丢失的5种
解决
方法,快速
解决
dll
丢失问题
在操作系统层面,由于许多Windows应用程序在运行时依赖于MSVCR
100
.
dll
文件来
调用
必要的C++运行时函数,一旦该文件丢失,相关应用可能无法正常启动或运行,表现为程序崩溃、闪退或者报错提示“找不到MSVCR
100
.
dll
”等现象。这意味着,如果你的应用程序是用较新版本的Visual Studio编译的,那么它应该可以在安装了较旧版本msvcr
100
.
dll
的操作系统上运行。2.下载到电脑上的文件一般是压缩包的形式,需要先把文件解压,然后安装后点击修复【立即修复】,修复的文件都是在系统目录中。
解决
Windows缺少vcomp
100
.
dll
问题
其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间
会
认为是软件或游戏
出错
了,其实并不是这样,其主要原因就是你电脑系统的该
dll
文件丢失了或者损坏了,这时你只需下载这个vcomp
100
.
dll
文件进行安装(前提是找到适合的版本),当我们执行某一个.exe程序时,相应的
DLL
文件就
会
被
调用
,因此安装好之后就能重新打开你的软件或游戏了.那么出现vcomp
100
.
dll
丢失要怎么
解决
?
解决
msvcp
100
.
dll
文件缺失的问题,如何科学修复msvcp
100
.
dll
在Windows系统中,msvcp
100
.
dll
文件是Microsoft Visual C++ 2010可再发行包的一部
分
,关键于执行众多与C++库关联的功能。这个文件对多个应用程序的运行至关重要。有时候用户可能
会
发现自己的系统中缺失了msvcp
100
.
dll
,导致一些程序无法启动或者运行
出错
。本文将深入讨论几种有效方法,帮助用户
解决
msvcp
100
.
dll
文件缺失的问题,旨在恢复程序的正常运行和系统的稳定性。
怎么
解决
msvcr
100
.
dll
丢失,六种
解决
msvcr
100
.
dll
丢失的方法
根据您的操作系统版本,将msvcr
100
.
dll
文件粘贴到以下目录之一:对于32位操作系统:C:\Windows\System32对于64位操作系统:C:\Windows\SysWOW64(即使您使用的是64位操作系统,某些32位应用程序可能需要32位的
DLL
文件)完成修复后,重新启动计算机,并尝试打开出现错误的软件或游戏,查看问题是否得到
解决
。从另一台相同操作系统版本的计算机上复制一个完好的msvcr
100
.
dll
文件到你的计算机相应目录下(通常是System32或SysWOW64文件夹)。
找不到msvcr
100
.
dll
的
解决
方法,轻松
解决
dll
报错问题
在计算机使用过程中,时常
会
遇到找不到msvcr
100
.
dll
文件的问题,这一现象不仅给用户带来了操作上的困扰,更深层次地影响了相关软件的正常运行。msvcr
100
.
dll
作为Microsoft Visual C++ Redistributable Package的一部
分
,对于许多应用程序的启动和执行至关重要。它的缺失可能导致程序无法启动、运行
出错
或功能受限等一系列问题。
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章