C++ 如何从自定义ODBC驱动程序创建DSN?
在过去的几周里,我一直在努力解决ODBC问题。取得了一些进展,但现在我陷入了使用自定义ODBC驱动程序设置dsn的困境 我所理解的,通过postgres开源代码查看。 我需要制作一个包含两个函数的dll 1.ConfigDsn 2确认河流 下面是我的代码示例C++ 如何从自定义ODBC驱动程序创建DSN?,c++,dll,installation,odbc,C++,Dll,Installation,Odbc,在过去的几周里,我一直在努力解决ODBC问题。取得了一些进展,但现在我陷入了使用自定义ODBC驱动程序设置dsn的困境 我所理解的,通过postgres开源代码查看。 我需要制作一个包含两个函数的dll 1.ConfigDsn 2确认河流 下面是我的代码示例 #include "pch.h" #include <Windows.h> BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpR
#include "pch.h"
#include <Windows.h>
BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
BOOL ConfigDSN(
HWND hwndParent,
WORD fRequest,
LPCSTR lpszDriver,
LPCSTR lpszAttributes) {
MessageBox(NULL, L"TU", L"OVDJE", 0);
return TRUE;
}
BOOL ConfigDriver(
HWND hwndParent,
WORD fRequest,
LPCSTR lpszDriver,
LPCSTR lpszArgs,
LPSTR lpszMsg,
WORD cbMsgMax,
WORD* pcbMsgOut) {
MessageBox(NULL, L"TU", L"OVDJE", 0);
return TRUE;
}
#包括“pch.h”
#包括
BOOL WINAPI DllMain(HANDLE hInst,ULONG ul_原因,LPVOID lpReserved)
{
开关(ul\u呼叫原因\u)
{
案例DLL\u进程\u附加:
案例DLL\u线程\u连接:
案例DLL\u线程\u分离:
案例DLL\u进程\u分离:
打破
}
返回TRUE;
}
布尔配置(
HWND hwndParent,
词频,
LPCSTR LPSZ驱动程序,
LPCSTR(LPSZ属性){
消息框(空,L“TU”,L“OVDJE”,0);
返回TRUE;
}
布尔配置驱动程序(
HWND hwndParent,
词频,
LPCSTR LPSZ驱动程序,
LPCSTR lpszArgs,
LPSTR lpszMsg,
单词cbMsgMax,
WORD*pcbMsgOut){
消息框(空,L“TU”,L“OVDJE”,0);
返回TRUE;
}
当我尝试添加新DSN时,没有任何消息框显示。
如果在DLLMain函数中添加消息框调用,则会显示消息框。
我假设我在构建DLL时缺少一个基本的C++知识。因为我在postgres源代码的资源文件夹中看到了一些.def文件
我的问题是我需要怎样做这个DLL,这样我就可以用自己的驱动程序创建一个DSN?< p>因为你正在构建C++代码,所有的函数名都会被调用。ODBC函数可能希望使用未损坏的名称 使用
extern“C”
防止名称损坏:
extern "C" BOOL ConfigDSN(...) { ... }
extern "C" BOOL ConfigDriver(...) { ... }
它没有帮助,但我添加了.def文件,并在那里添加了function,一切正常。还是谢谢你的帮助