如题
delphi中屏蔽ADO块的代码没有问题,但是加上就没法调用
delphi中的代码:
library ADSB;uses
  ShareMem, SysUtils, ADODB, DB, ActiveX, Windows, StrUtils,
  Classes;
{$R *.res}
const
connectionstr='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=airline2;Data Source=.';function aircraft(var FlightID:PChar):PChar;cdecl;export;
var
  PType:string;
  con1: TADOConnection;
  qry1: TADOQuery;
begin
  CoInitialize(nil);
  qry1:=TADOQuery.Create(nil);
  con1:=TADOConnection.Create(nil);
  qry1.Connection:=con1;
  qry1.ConnectionString:=connectionstr;
  qry1.Close;
  qry1.SQL.Clear;
  qry1.SQL.Add('select NO from routes where FN collate Chinese_PRC_CS_AS=:a');
    qry1.Parameters.ParamByName('a').Value:=StrPas(FlightID);
    qry1.Open;
    if qry1.RecordCount>0 then
    begin
      PType:=qry1.Fields[0].Value;
    end;
    Result:=PChar(PType);
    qry1.Close;
  CoUninitialize;
end;exports
  aircraft;beginend.vs中的代码如下:
#include <Windows.h>
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
typedef char*(*myFun)(char* arg1);
int main(int argi,char* argv[])
{
HINSTANCE hDll;
hDll=LoadLibrary("ADSB.dll");
if (hDll!=NULL)
{
myFun fun;
fun=(myFun)GetProcAddress(hDll, "aircraft");
if(fun!=NULL)
{
char* p="AAF103";
char* pl=fun(p);
cout<<pl<<endl;
}
FreeLibrary(hDll);
}
system("pause");
return 0;
}求各位大神帮忙看看什么地方有问题?谢谢!