用VC2005编写了一个DLL,只实现了最简单的功能,int add(int a),在定义中把这个参数a加10后返回。在CB6中没办法调用这个DLL,用LoadLibrary("Test.Dll")时返回的是NULL。
同样的DLL代码,如果是在VC6中编译后,在CB中是可以调用的。
下面是完整的DLL代码:
////////////////////
Simple.h
///////////////////
extern "C" _declspec(dllexport) int add(int a);////////////////////
Simple.cpp
///////////////////
#include "Simple.h"int add(int a)
{
a += 10;
return a;
}

解决方案 »

  1.   

    既然用了_declspec(dllexport)转出声明, 就不需要用extern "C"声明了.
    另外, 声明__stdcall用标准调用试下.
      

  2.   

    看这篇
    http://blog.csdn.net/akirya/archive/2008/02/14/2093031.aspx
      

  3.   

    是在同一台计算机上面运行的还是不同的计算机?
    如果是不同的计算机的话,应该是缺少VC2005的运行时,你可以选择静态链接DLL。
      

  4.   

    设置为静态编译的方法:
    在项目属性里面选择"C/C++ -> 代码生成 -> 运行时库",修改为"多线程(/MT)"或者"多线程调试(/MTD)"
      

  5.   

    在楼主的vs2005的机器上,搜索vcredist_x86.exe或其它相应版本,并在目的机器上安装