在安装了vc++.net的机器上手工注册和编译自动注册都成功.
在未装的机器上提示说找不到指定的模块!(用的是regsvr32)
我注意到了,在vc++6.0下的def文件大致如下:
EXPORTS
DllCanUnloadNow     @1 PRIVATE
DllGetClassObject   @2 PRIVATE
DllRegisterServer   @3 PRIVATE
DllUnregisterServer @4 PRIVATE而在vc++.net下的def文件大致如下:
EXPORTS
DllCanUnloadNow     PRIVATE
DllGetClassObject   PRIVATE
DllRegisterServer   PRIVATE
DllUnregisterServer PRIVATE
而且如果在vc++.net下手工加上@1等的话,会有警告:warning LNK4222: 不应为导出符号“DllCanUnloadNow”分配序号
请问各位高手,应该怎么办?

解决方案 »

  1.   

    Mark.
    这种不同命名规则导致的问题,不知道该怎么解决,关注!
      

  2.   

    应该不是它的问题,尝试静态编译控件[估计是MFC运行库的问题,或者拷贝mfc70.dll和msvcr70.dll.]
    ; WebOffice.def : Declares the module parameters.LIBRARY      "WEBOFFICE.OCX"EXPORTS
    DllCanUnloadNow     @1 PRIVATE
    DllGetClassObject   @2 PRIVATE
    DllRegisterServer   @3 PRIVATE
    DllUnregisterServer @4 PRIVATE
      

  3.   

    gjd111686(数字金刚)
    你说的那两个文件光拷贝就行了吗?要不要手工注册?
      

  4.   

    一般静态编译后就可以了.如果要拷贝运行库,支持MFC的就那两个.如果用到了别的控件或者是DLL需要注册.其实有警告不是问题,编译可以通过的.
      

  5.   

    是不是用了.Net Framework里面的东西?
      

  6.   

    拷贝支持MFC的就那两个运行库到别的机器上,也无法注册!!!提示也一样!
    我不是说警告怎么怎么的,而是说可能在那个地方有问题,因为做出来的东西无法注册这是事实,不注册控件无法使用啊!
    有人说要用.net做的东西,必须要安装.net framework。
      

  7.   

    我现在也越来越觉得:用.net做的东西,必须要安装.net framework。
    因为我做了个最简单的对话框程序,在别的未安装.net的机器上也无法运行,说要mfc71.dll,可是这个文件就算拷贝过来也没用,因为无法注册。