首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问:生成dll遇到了麻烦,老是说文件损坏,请问

2012-02-26 
请教:生成dll遇到了麻烦,老是说文件损坏,请教。请教:生成dll遇到了麻烦,老是说文件损坏,请教。我用visualstu

请教:生成dll遇到了麻烦,老是说文件损坏,请教。
请教:生成dll遇到了麻烦,老是说文件损坏,请教。

我用visual   studio   2005   SP1   编译以下一个建立的例子:

第一个是一个dll工程,有以下两个文件,而且在项目属性-> 配置属性-> 常规中将配置类型设置为动态库(.dll):
文件test1.h

#ifndef   __test1_h__
#define   __test1_h__

class   __declspec(dllexport)   Test
{
public:
        Test(int   a,   int   b)
                :x(a),   y(b)
        {
        }

        ~Test();

        int   Add();
private:
        int   x;
        int   y;
};

#endif

文件test1.cpp

#include   "test1.h "

Test::~Test()
{
       
}

int   Test::Add()
{
        return   x+y;
}

这个工程是编译成功了,生成了一个test.dll的文件

然后第2个工程:
文件main.cpp
#include   "../test/test1.h "
#include   <windows.h>
#include   <iostream>

using   namespace   std;

#pragma   comment(lib,   "../test/Debug/test.dll ")

int   main()
{
        Test   a(1,2);
        cout   < <   a.Add();
        int   stop;
        cin   > >   stop;
        return   0;
}

结果老是报告说:
1   fatal   error   LNK1107:   文件无效或损坏:   无法在   0x2F0   处读取

后来我又试着在第2个工程的属性-> 配置属性-> 连接器-> 输入-> 附加依赖项中加入这个dll文件,也提示这个错误.

然后我改用LoadLibrart()函数.直接提示我的是找不到Test::Add的定义.

最后我在项目依赖项中把工程1设置为第2个工程的依赖项目.这样就编译通过了.

但着实没想明白为什么会出现上面几个问题.

[解决办法]
要加入.lib而不是dll
你改一下#pragma comment(lib, "../test/Debug/test.lib ")
dll都会生成一个这个的.
good luck

热点排行