我想做一个动态链接库DllDemo,和一个调用该DllDemo的可执行程序DLLTest,在DllDemo中定义函数
Value transferValue(int flag,Value& value,CString decodestring),Value是一个类,在DllMemo和DLLTest中都是一样的,请问这样的transferValue是否可以实现?

解决方案 »

  1.   

    在DllTest中应该包含Value类的定义,并且需要将Value类导出。
      

  2.   

    你的动态链接库中是否有Value类的定义
      

  3.   

    把函数定义为类的成员函数,用MFC扩展DLL,将整个类导出
      

  4.   

    我是个新手,实在看不懂你们的话,555555555555555,最好大家能给个简略实现的版本,我想在DLLdemo 和dllTest中定义Value类,而且这两个类的定义是一样的。这样可以不?
      

  5.   

    或者大家帮我实现一个这样的动态链接库:
    Dlldemo:动态链接库
    Dlltest:可执行的exe文件,调用Dlldemo中的内容,
    当Dlltest给Dlldemo传递一个Value类时,Dlldemo给传回一个CString类型,
    当Dlltest给Dlldemo传递一个CString类时,Dlldemo给传回一个Value类
    Value是自己定义的类。
    我还可以在送分啊!!!!!!!!!!!!555555555555555555
      

  6.   

    你的要求已经搞定。
    把你的E-Mail短消息告诉我,我给你发过去。
      

  7.   

    //对不起可以,我自己作了一个程序试验,结果发现是可以的,很抱歉,下面是测试的部分代码,这个测试是成功的dll文件:
    1 类定义.h
    // DllTransfer.h: interface for the CDllTransfer class.
    //
    //////////////////////////////////////////////////////////////////////#if !defined(AFX_DLLTRANSFER_H__35ED9875_E3AD_45C2_A339_E0AA0AC0BF26__INCLUDED_)
    #define AFX_DLLTRANSFER_H__35ED9875_E3AD_45C2_A339_E0AA0AC0BF26__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000class AFX_EXT_CLASS CDllTransfer  
    {
    public:
    CDllTransfer();
    virtual ~CDllTransfer();
    public:
    int x;
    int y;
    };#endif // !defined(AFX_DLLTRANSFER_H__35ED9875_E3AD_45C2_A339_E0AA0AC0BF26__INCLUDED_)2 Cpp 文件:
    // DllTransfer.cpp: implementation of the CDllTransfer class.
    //
    //////////////////////////////////////////////////////////////////////#include "stdafx.h"
    #include "DllTransfer.h"#ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif//////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////CDllTransfer::CDllTransfer()
    {
    x=10;
    y=10;
    }CDllTransfer::~CDllTransfer()
    {
    }3 函数库:
    //.h文件
    #ifndef __MYFUN_H__
    #define __MYFUN_H__#include "DllTransfer.h"
    CDllTransfer AFX_EXT_API TransferDate();#endifCpp文件:
    #include "stdafx.h"
    #include "MyFun.h"CDllTransfer TransferDate()
    {
    CDllTransfer m_xx;
    m_xx.x=100;
    m_xx.y=200;
    return m_xx;
    }调用程序:
    stdafx.h中加入
    #pragma comment(lib,"..\\ReadDbfLib\\debug\\ReadDbfLib.lib")
    #pragma message("Automatically linking with WFLib.dll")
    #include "..//dllpath//DllTransfer.h"调用的文件里加入
    #include "..\ReadDbfLib\MyFun.h"
    用下面的方法调用是成功的
    void CMainFrame::OnTesttranclass() 
    {
    CDllTransfer m_xx;
    m_xx=TransferDate();
    }
      

  8.   

    我的信箱是[email protected],多谢sinall()!还有mousefj(冯杰),你的代码看不太懂,能给我发一份吗?
      

  9.   

    把整个类导出,然后传递值的函数作为类的成员函数
    exe中就可以直接定义一个类的对象,然后通过对象来调用成员函数来实现传递
      

  10.   

    两边都要有Value这个类定义,然后你才能显式加载此函数
      

  11.   

    先将Value导出才可以用,不过这种Dll写出来对其他语言的调用不是很兼容
      

  12.   

    楼上的兄弟什么意思?Value类不导出不行吗,在两个程序中都做相同的定义?这种Dll写出来对其他语言的调用不是很兼容
    ------------
    真是这样吗?如果是这样,我就不能这样做了,因为最后的调用程序可能是Java语言的
      

  13.   

    在DllTest中应该包含Value类的定义,并且需要将Value类导出。
      

  14.   

    我不想导出Value类,有没有办法实现?因为我得调用程序可能是用Java编写的。
      

  15.   

    Value类不导出不行,我不知道Java编译环境提供怎样的兼容机制。但是C++定义的类型和Java还是有点不同,Java能不能很好的支持就不知了。但在VB等就可能调用失败
      

  16.   

    我现在想我的这个动态链接库可能做的没有价值,如果Value不导出还行,如果导出的话,还要导出它的子类,Value还有十几个子类,实际传递的值都是Value的子类。
    大家可以帮我看一下,不导出情况下,有什么办法?
      

  17.   

    如果不导出Value,动态链接库怎么调用,入口函数怎么写?