关于VC++6.0 嵌入 使用python,链接错误的问题

一颗仙豆 2015-10-09 11:16:16
#include "stdafx.h"
#include <Python.h> //<Python.h>放在"stdafx.h"前面包含就出错,何解? 2012_05_17
#include "../public/CommonDef.h"
#include "../public/LogEvent.h"

/*//////////////////////////////////////////////////////////////////////////
Global variable
//////////////////////////////////////////////////////////////////////////*/
CLogEvent g_logEvent;
HANDLE g_hFile = INVALID_HANDLE_VALUE;
HANDLE g_hThread = NULL;
SOCKET g_sTcp = INVALID_SOCKET;


/*//////////////////////////////////////////////////////////////////////////
Python function
//////////////////////////////////////////////////////////////////////////*/
static PyObject* OpenLogFile(PyObject *self, PyObject *args);
static PyObject* OpenNetLogFile(PyObject *self, PyObject *args);
static PyObject* WriteLog(PyObject *self, PyObject *args);
static PyObject* StartServer(PyObject *self, PyObject *args);
static PyObject* StopServer(PyObject *self, PyObject *args);
static PyObject* IsEmpty(PyObject *self, PyObject *args);

static PyMethodDef bfMethods[] =
{
{"OpenLogFile", OpenLogFile, METH_VARARGS, "OpenLogFile"},
{"OpenNetLogFile", OpenNetLogFile, METH_VARARGS, "OpenNetLogFile"},
{"WriteLog", WriteLog, METH_VARARGS, "WriteLog"},
{"StartServer", StartServer, METH_NOARGS, "StartServer"},
{"StopServer", StopServer, METH_NOARGS, "StopServer"},
{"IsEmpty", IsEmpty, METH_NOARGS, "IsEmpty"},
{NULL, NULL, 0, NULL}
};


BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
default:
break;
}
return TRUE;
}


DWORD WINAPI LogEventSeverThread(LPVOID lpParamter)
{
char szRead[RESOURSE_SIZE] = {0};
DWORD dwWrite;

if (g_hFile == INVALID_HANDLE_VALUE && g_sTcp == INVALID_SOCKET) {
return -1;
}

while (TRUE)
{
if (g_logEvent.Read(szRead, RESOURSE_SIZE))
{
//printf("g_logEvent.Read success\n");
if (g_hFile != INVALID_HANDLE_VALUE) {
::WriteFile(g_hFile, szRead, strlen(szRead), &dwWrite, NULL);
::WriteFile(g_hFile, "\r\n", 2, &dwWrite, NULL);
}
if (g_sTcp != INVALID_SOCKET) {
::send(g_sTcp, szRead, strlen(szRead), 0);
::send(g_sTcp, "\r\n", 2, 0);
}
}
}

return 0;
}

Linking...
Creating library Release/ALogEvent.lib and object Release/ALogEvent.exp
ALogEvent.obj : error LNK2001: unresolved external symbol _Py_BuildValue
ALogEvent.obj : error LNK2001: unresolved external symbol _PyArg_ParseTuple
ALogEvent.obj : error LNK2001: unresolved external symbol _Py_InitModule4
../Bin/ALogEvent.pyd : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bluewanderer 2015-10-10
  • 打赏
  • 举报
回复
你把什么放在预编译头前面也不可能对啊...
eziowayne 2015-10-10
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
凡事无绝对
赵4老师 2015-10-09
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·…… “跨语言、跨机,跨操作系统,跨硬件平台,跨国,跨*.*的”苦海无边, 回头是“使用共享纯文本文件进行信息交流”的岸!
勤奋的小游侠 2015-10-09
  • 打赏
  • 举报
回复
*.lib文件没有添加进工程的配置

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧