Dyl*_*dal 2 c vb.net dll sql-server-2008-r2
所以经过大约一天半的时间我就没有取得进展.
我需要在C中编写一个DLL,用于现有应用程序的插件.DLL必须由Visual Studio 2008编译器使用以下选项进行编译
cl -DNT40 -DPOMDLL -DCRTAPI1 = _cdecl -DCRTAPI2 = cdecl -D_WIN32 -DWIN32 -DWIN32_LEA N_AND_MEAN -DWNT -DBYPASS_FLEX -D_INTEL = 1 -DIPLIB = none -I.-I"C:\ plm\2T-RAC\TcEx press53\include"-I"C:\ Program Files(x86)\ Microsoft Visual Studio 8\VC\include"-c -nologo -EHsc -W1 -Ox -Oy - -MD C:\ mydir\myDll.c
然后它链接到应用程序库.
它实际需要做什么以及是什么导致我的问题是,它需要从sql server 2008 r2中提取数据的其中一种方法.
从我今天看到的情况来看,你无法直接在C中做到这一点,因为2005年以后的SQL Server旨在与CLR语言(C#,C++,VB.Net)进行通信.
有人建议我使用VB.Net dll处理所有数据库通信,然后从C dll中调用所述函数.
我在非托管代码中调用托管dll主题的大部分内容都谈到了pinvoke或com包装器,主要是从c ++的角度来看.
我没有使用COM或任何提到的技术的经验,所以如果有人可以帮助它将非常感激.
你有很多选择,但并非所有这些都是微不足道的.
将托管代码导出到C客户端的第一种也是更简单的方法是使用C++/CLI编写代码(或使用该语言编写包装器).您只需像在普通的非托管代码中那样导出所需的C函数,并在其实现中调用所需的托管函数.在MSDN上.
您将托管类导出为COM对象.从非托管代码中,您将看到正常的COM对象,请查看此处.
你可以用不同的方式做到这一点.更简单的是恢复观点.如果你有一个VB.NET组件(vbnet.dll)和C库(purec.dll),你可以想像的第一件事就是到添加依赖于vbnet.dll在purec.dll.如果以这种方式执行此操作,则必须使用COM或使应用程序成为.NET主机.一种更简单的方法是恢复:向purec.dllin 添加依赖vbnet.dll(使用P/Invoke).你的C接口将导出一个struct(例如)可以用函数指针填充的东西,你将struct在VB.NET中填充它(作为代理),你的C代码将简单地调用它们.看看这里.
本机主持人:这是艰难的方式.您的本机应用程序将托管.NET应用程序.这是漫长而复杂的,如果您只需要输出少量功能,我想这太过分了.我在这里发布仅供参考:在MSDN上托管概述.
IPC.您可以将应用程序分开,彼此可以忽略另一个应用程序的编写方式.只需定义一个接口和一个通道来连接它们(命名管道,共享内存或其他任何东西,在这里查看列表).如果您的VB.NET应用程序是一个服务,或者它由正在运行的应用程序托管,如果它只是导出一些您无法执行的功能,则此方法有效.
| 归档时间: |
|
| 查看次数: |
2093 次 |
| 最近记录: |