只包含了一个求两数之和的动态链接库项目,起先,是用__declspec 导出函数,
然后编译正常,后来新建了个.def文件,然后过了一回,我把它删掉了,而其他代码什么都没有改动,但是不管怎么做,编译的时候就一直提示"无法打开.def文件", 不得已,我重建了个项目,复制了文件,才编译正常,不知道为什么,是不是只要新建了def文件,那么这个项目以后就只选择用def文件方式来导出函数了????

解决方案 »

  1.   


    对,我在测试这两种导出函数的方法,测试完.def,就删掉了,还是用代码方式导出函数,
    但是怎么做也编译不了了,一直提示无法找到def文件
      

  2.   

    你们可以试一下,新建个动态链接库项目,先用__declspec方式写导出函数,然后编译会正常
    接着你去新建个XX.def文件,然后紧接着再把这个XX.def文件删掉,你在编译,就会发现提示无法打开XX.def文件..
      

  3.   

    检查一下 配置属性->链接器->输入->模块定义文件 是否设置了.def文件
      

  4.   


    果然如你所料,原来默认情况下:配置属性->链接器->输入->模块定义文件 这个地方是空的,
    当新建个xx.def文件后,这个地方就被自动加上了xx.def,
    但是删掉这个文件,这里还会继续保留,如果不手工把这个自动填上去的xx.def删除掉,再次编译,就会找不到xx.def
    或许这是VS2008的一个疏忽,或者是个不仁性的设置吧,不过总算知道原因了,
    谢谢!