我有一个function是传入数字后产生一张BMP图片到指定的路径,public static void Toimage(string CodeID, string BmpPath)
{
……………………
}但现在碰到很麻烦的问题~
昨天老板给了一个需求,要给客户一个DLL让他们的工程人员调用我的程序,
问题来了我是用C# 对方都是用C开发的,所以我的DLL他们肯定不能使用了,
于是想了一夜总觉得我应该将C# Convert VB6(因为6年前有用过一阵子)
但是VB6要编译成标准C可以用的DLL似乎问题很多是吗?
唉!因为我不懂C要不然C# Convert C就解决了…
上来发文看看有没有同样经验的前辈给一些意见~
ps:对了因为我是存成BMP但是对方要求要返回Raw的型态,这一方面我没经验,求助!!

解决方案 »

  1.   

    dll应该可以调用吧。这个还真没有经验,只知道C#调C\C++
      

  2.   

    VB6也能做标准DLL,不过挺麻烦
      

  3.   

    VB一样不支持编译原生的dll。建议把.net库封装成activeX dll(不需要重新编码),让他们调用。
      

  4.   

    两种方法:
    1.注册成COM对象通过COM Automation给他们调用
    2.用C++/CLI封一层.导出函数给他们用.
      

  5.   

    再有C#可以做成COM,C应该可以调用,不过调用方式不太一样
      

  6.   


    不太懂這一句話的意思? c#產生成activeX 
      

  7.   

    C# 产生的类库 dll,设置 com visible 后可以包装成一个com组件(activex dll)。
      

  8.   

    我好想记得纯dll都是标准C接口啊,window的程序都可以调用啊
      

  9.   


    VB能编译只是不能输出函数接口,所以要hack一下
      

  10.   

    本帖最后由 caozhy 于 2011-06-01 11:50:00 编辑
      

  11.   


    vb啥时候成虚拟机了VB编写的ActiveX DLL 就是一个标准DLL,只不过它只导出了4个COM接口函数,VB ActiveX不存在只能由VB调用这样的事吧
      

  12.   

    在vs.net项目的属性->应用程序->程序集信息中有个选项“使程序com可见",貌似就可以啦。
      

  13.   

    这么点功能还是用C重新写一遍吧,花的时间肯定少过你去学习COM, .NET interop。
      

  14.   

    使用C# 生成com组件吧。虽然用C++调过C#的dll,但C的话,应该不成。
      

  15.   

    VB6时代的vb可以通过替换linker阻断编译过程使用自己定义的def文件手动link的方式来导出dll函数
    导出的函数可用,但是仍然需要msvbvm6.dll的支持.不过这个dllwinme之后的系统都自带了也不是啥问题了.
      

  16.   

    vb一直是虚拟机.msvbvm6.dll现在只要不是跑win98的老古董win系统都自带所以你感觉不到而已.
      

  17.   

    所谓VB虚拟只不过是VB可以编译成P-code解释执行,然而现在的VB可以编译成native code,msvbvm.dll提供了在两种情况下的vb各种内置功能的函数封装,在这层面上与VC的MFC42.dll没有本质区别,查看VB和VC的link.exe可以发现它们就是相同的一个文件
      

  18.   

    唉~看样子我还是改投 Delphi 的怀抱好了~
      

  19.   

    这个你试了吗?我做试过没有问题呀,貌似你们想得过于复杂了。在vs.net项目的属性->应用程序->程序集信息中有个选项“使程序com可见",貌似就可以啦。
      

  20.   

    放弃C#了!还是改用 C/C++ 来输出DLL比较快。晚一点再来结帖散分
      

  21.   

    你看下你写的程序,里面用到这个功能的函数或者过程用 C++或者C语言重新做一下,然后生成.dll文件.然后给客户一份文档,把里面的接口什么的介绍一下.
    希望能对你有所帮助.
      

  22.   

    以你的这个需求,没必要那么复杂。
    直接编译成exe的控制台程序,然后让他们用像命令行方式那样调用 如: xxx.exe 参数 。任何其它语言都能调用。直接手敲命令行也能调用。我经常这么搞。