Thread: Undefined reference with libpq on Visual Studio 2012
Hello all, I'm trying to build libpq using nmake from Visual Studio 2012. So I've tried the following : nmake -f win32.mak CPU=AMD64 while in postgresql-9.2.4/src directory. It does the following : link.exe -lib @C:\Users\markand\AppData\Local\Temp\nm2F60.tmp rc.exe /l 0x409 /fo".\Release\libpq.res" libpq-dist.rc Microsoft (R) Windows (R) Resource Compiler Version 6.2.9200.16384 Copyright (C) Microsoft Corporation. All rights reserved. link.exe @C:\Users\markand\AppData\Local\Temp\nm303B.tmp libpqdll.def : error LNK2001: symbole externe non résolu PQbackendPID libpqdll.def : error LNK2001: symbole externe non résolu PQbinaryTuples libpqdll.def : error LNK2001: symbole externe non résolu PQcancel libpqdll.def : error LNK2001: symbole externe non résolu PQclear libpqdll.def : error LNK2001: symbole externe non résolu PQclientEncoding libpqdll.def : error LNK2001: symbole externe non résolu PQcmdStatus libpqdll.def : error LNK2001: symbole externe non résolu PQcmdTuples libpqdll.def : error LNK2001: symbole externe non résolu PQconndefaults libpqdll.def : error LNK2001: symbole externe non résolu PQconnectPoll libpqdll.def : error LNK2001: symbole externe non résolu PQconnectStart libpqdll.def : error LNK2001: symbole externe non résolu PQconnectStartParams libpqdll.def : error LNK2001: symbole externe non résolu PQconnectdb libpqdll.def : error LNK2001: symbole externe non résolu PQconnectdbParams libpqdll.def : error LNK2001: symbole externe non résolu PQconnectionNeedsPasswo rd libpqdll.def : error LNK2001: symbole externe non résolu PQconnectionUsedPasswor d libpqdll.def : error LNK2001: symbole externe non résolu PQconninfoFree libpqdll.def : error LNK2001: symbole externe non résolu PQconninfoParse libpqdll.def : error LNK2001: symbole externe non résolu PQconsumeInput libpqdll.def : error LNK2001: symbole externe non résolu PQcopyResult libpqdll.def : error LNK2001: symbole externe non résolu PQdb libpqdll.def : error LNK2001: symbole externe non résolu PQdescribePortal libpqdll.def : error LNK2001: symbole externe non résolu PQdescribePrepared libpqdll.def : error LNK2001: symbole externe non résolu PQdisplayTuples libpqdll.def : error LNK2001: symbole externe non résolu PQdsplen libpqdll.def : error LNK2001: symbole externe non résolu PQencryptPassword libpqdll.def : error LNK2001: symbole externe non résolu PQendcopy libpqdll.def : error LNK2001: symbole externe non résolu PQenv2encoding libpqdll.def : error LNK2001: symbole externe non résolu PQerrorMessage libpqdll.def : error LNK2001: symbole externe non résolu PQescapeBytea libpqdll.def : error LNK2001: symbole externe non résolu PQescapeByteaConn libpqdll.def : error LNK2001: symbole externe non résolu PQescapeIdentifier libpqdll.def : error LNK2001: symbole externe non résolu PQescapeLiteral libpqdll.def : error LNK2001: symbole externe non résolu PQescapeString libpqdll.def : error LNK2001: symbole externe non résolu PQescapeStringConn libpqdll.def : error LNK2001: symbole externe non résolu PQexec libpqdll.def : error LNK2001: symbole externe non résolu PQexecParams libpqdll.def : error LNK2001: symbole externe non résolu PQexecPrepared libpqdll.def : error LNK2001: symbole externe non résolu PQfformat libpqdll.def : error LNK2001: symbole externe non résolu PQfinish libpqdll.def : error LNK2001: symbole externe non résolu PQfireResultCreateEvent s libpqdll.def : error LNK2001: symbole externe non résolu PQflush libpqdll.def : error LNK2001: symbole externe non résolu PQfmod libpqdll.def : error LNK2001: symbole externe non résolu PQfn libpqdll.def : error LNK2001: symbole externe non résolu PQfname libpqdll.def : error LNK2001: symbole externe non résolu PQfnumber libpqdll.def : error LNK2001: symbole externe non résolu PQfreeCancel libpqdll.def : error LNK2001: symbole externe non résolu PQfreeNotify libpqdll.def : error LNK2001: symbole externe non résolu PQfreemem libpqdll.def : error LNK2001: symbole externe non résolu PQfsize libpqdll.def : error LNK2001: symbole externe non résolu PQftable libpqdll.def : error LNK2001: symbole externe non résolu PQftablecol libpqdll.def : error LNK2001: symbole externe non résolu PQftype libpqdll.def : error LNK2001: symbole externe non résolu PQgetCancel libpqdll.def : error LNK2001: symbole externe non résolu PQgetCopyData libpqdll.def : error LNK2001: symbole externe non résolu PQgetResult libpqdll.def : error LNK2001: symbole externe non résolu PQgetisnull libpqdll.def : error LNK2001: symbole externe non résolu PQgetlength libpqdll.def : error LNK2001: symbole externe non résolu PQgetline libpqdll.def : error LNK2001: symbole externe non résolu PQgetlineAsync libpqdll.def : error LNK2001: symbole externe non résolu PQgetssl libpqdll.def : error LNK2001: symbole externe non résolu PQgetvalue libpqdll.def : error LNK2001: symbole externe non résolu PQhost libpqdll.def : error LNK2001: symbole externe non résolu PQinitOpenSSL libpqdll.def : error LNK2001: symbole externe non résolu PQinitSSL libpqdll.def : error LNK2001: symbole externe non résolu PQinstanceData libpqdll.def : error LNK2001: symbole externe non résolu PQisBusy libpqdll.def : error LNK2001: symbole externe non résolu PQisnonblocking libpqdll.def : error LNK2001: symbole externe non résolu PQisthreadsafe libpqdll.def : error LNK2001: symbole externe non résolu PQlibVersion libpqdll.def : error LNK2001: symbole externe non résolu PQmakeEmptyPGresult libpqdll.def : error LNK2001: symbole externe non résolu PQmblen libpqdll.def : error LNK2001: symbole externe non résolu PQnfields libpqdll.def : error LNK2001: symbole externe non résolu PQnotifies libpqdll.def : error LNK2001: symbole externe non résolu PQnparams libpqdll.def : error LNK2001: symbole externe non résolu PQntuples libpqdll.def : error LNK2001: symbole externe non résolu PQoidStatus libpqdll.def : error LNK2001: symbole externe non résolu PQoidValue libpqdll.def : error LNK2001: symbole externe non résolu PQoptions libpqdll.def : error LNK2001: symbole externe non résolu PQparameterStatus libpqdll.def : error LNK2001: symbole externe non résolu PQparamtype libpqdll.def : error LNK2001: symbole externe non résolu PQpass libpqdll.def : error LNK2001: symbole externe non résolu PQping libpqdll.def : error LNK2001: symbole externe non résolu PQpingParams libpqdll.def : error LNK2001: symbole externe non résolu PQport libpqdll.def : error LNK2001: symbole externe non résolu PQprepare libpqdll.def : error LNK2001: symbole externe non résolu PQprint libpqdll.def : error LNK2001: symbole externe non résolu PQprintTuples libpqdll.def : error LNK2001: symbole externe non résolu PQprotocolVersion libpqdll.def : error LNK2001: symbole externe non résolu PQputCopyData libpqdll.def : error LNK2001: symbole externe non résolu PQputCopyEnd libpqdll.def : error LNK2001: symbole externe non résolu PQputline libpqdll.def : error LNK2001: symbole externe non résolu PQputnbytes libpqdll.def : error LNK2001: symbole externe non résolu PQregisterEventProc libpqdll.def : error LNK2001: symbole externe non résolu PQregisterThreadLock libpqdll.def : error LNK2001: symbole externe non résolu PQrequestCancel libpqdll.def : error LNK2001: symbole externe non résolu PQresStatus libpqdll.def : error LNK2001: symbole externe non résolu PQreset libpqdll.def : error LNK2001: symbole externe non résolu PQresetPoll libpqdll.def : error LNK2001: symbole externe non résolu PQresetStart libpqdll.def : error LNK2001: symbole externe non résolu PQresultAlloc libpqdll.def : error LNK2001: symbole externe non résolu PQresultErrorField libpqdll.def : error LNK2001: symbole externe non résolu PQresultErrorMessage libpqdll.def : error LNK2001: symbole externe non résolu PQresultInstanceData libpqdll.def : error LNK2001: symbole externe non résolu PQresultSetInstanceData libpqdll.def : error LNK2001: symbole externe non résolu PQresultStatus libpqdll.def : error LNK2001: symbole externe non résolu PQsendDescribePortal libpqdll.def : error LNK2001: symbole externe non résolu PQsendDescribePrepared libpqdll.def : error LNK2001: symbole externe non résolu PQsendPrepare libpqdll.def : error LNK2001: symbole externe non résolu PQsendQuery libpqdll.def : error LNK2001: symbole externe non résolu PQsendQueryParams libpqdll.def : error LNK2001: symbole externe non résolu PQsendQueryPrepared libpqdll.def : error LNK2001: symbole externe non résolu PQserverVersion libpqdll.def : error LNK2001: symbole externe non résolu PQsetClientEncoding libpqdll.def : error LNK2001: symbole externe non résolu PQsetErrorVerbosity libpqdll.def : error LNK2001: symbole externe non résolu PQsetInstanceData libpqdll.def : error LNK2001: symbole externe non résolu PQsetNoticeProcessor libpqdll.def : error LNK2001: symbole externe non résolu PQsetNoticeReceiver libpqdll.def : error LNK2001: symbole externe non résolu PQsetResultAttrs libpqdll.def : error LNK2001: symbole externe non résolu PQsetSingleRowMode libpqdll.def : error LNK2001: symbole externe non résolu PQsetdbLogin libpqdll.def : error LNK2001: symbole externe non résolu PQsetnonblocking libpqdll.def : error LNK2001: symbole externe non résolu PQsetvalue libpqdll.def : error LNK2001: symbole externe non résolu PQsocket libpqdll.def : error LNK2001: symbole externe non résolu PQstatus libpqdll.def : error LNK2001: symbole externe non résolu PQtrace libpqdll.def : error LNK2001: symbole externe non résolu PQtransactionStatus libpqdll.def : error LNK2001: symbole externe non résolu PQtty libpqdll.def : error LNK2001: symbole externe non résolu PQunescapeBytea libpqdll.def : error LNK2001: symbole externe non résolu PQuntrace libpqdll.def : error LNK2001: symbole externe non résolu PQuser libpqdll.def : error LNK2001: symbole externe non résolu appendBinaryPQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu appendPQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu appendPQExpBufferChar libpqdll.def : error LNK2001: symbole externe non résolu appendPQExpBufferStr libpqdll.def : error LNK2001: symbole externe non résolu createPQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu destroyPQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu enlargePQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu initPQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu lo_close libpqdll.def : error LNK2001: symbole externe non résolu lo_creat libpqdll.def : error LNK2001: symbole externe non résolu lo_create libpqdll.def : error LNK2001: symbole externe non résolu lo_export libpqdll.def : error LNK2001: symbole externe non résolu lo_import libpqdll.def : error LNK2001: symbole externe non résolu lo_import_with_oid libpqdll.def : error LNK2001: symbole externe non résolu lo_lseek libpqdll.def : error LNK2001: symbole externe non résolu lo_open libpqdll.def : error LNK2001: symbole externe non résolu lo_read libpqdll.def : error LNK2001: symbole externe non résolu lo_tell libpqdll.def : error LNK2001: symbole externe non résolu lo_truncate libpqdll.def : error LNK2001: symbole externe non résolu lo_unlink libpqdll.def : error LNK2001: symbole externe non résolu lo_write libpqdll.def : error LNK2001: symbole externe non résolu pg_char_to_encoding libpqdll.def : error LNK2001: symbole externe non résolu pg_encoding_to_char libpqdll.def : error LNK2001: symbole externe non résolu pg_utf_mblen libpqdll.def : error LNK2001: symbole externe non résolu pg_valid_server_encodin g libpqdll.def : error LNK2001: symbole externe non résolu pg_valid_server_encodin g_id libpqdll.def : error LNK2001: symbole externe non résolu pgresStatus libpqdll.def : error LNK2001: symbole externe non résolu pqsignal libpqdll.def : error LNK2001: symbole externe non résolu printfPQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu resetPQExpBuffer libpqdll.def : error LNK2001: symbole externe non résolu termPQExpBuffer .\Release\libpqdll.lib : fatal error LNK1120: 161 externes non résolus NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0 \VC\BIN\link.exe"' : code retour '0x460' Stop. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0 \VC\BIN\nmake.EXE"' : code retour '0x2' Stop. Symbol externe non résolu means "Undefined symbol". Is VS2012 unsupported? Regards, -- Demelier David
Hallo
I am trying to create an aggregate function.
One of the arguments is static and is not needed until the final function.
From the doc I see that the final function " must take a single argument of type state_data_type"
Is it not possible to just pass this arguments directly to the final function?
I was looking at string_agg but that was doing all the processing in the SFUNC if I understand it right.
But to use it as example, if it instead would have collected all strings in an array and added the delimiter in the final function, would that be possible?
I would expect the definition of the aggregate to look something like:
CREATE AGGREGATE string_agg(text, text) (
SFUNC=string_agg_transfn($1),
STYPE=internal,
FINALFUNC=string_agg_finalfn($2)
);
Am I missing something or am I just thinking in irregular circles (that happens now and then)
Best Regards
Nicklas Avén
I am trying to create an aggregate function.
One of the arguments is static and is not needed until the final function.
From the doc I see that the final function " must take a single argument of type state_data_type"
Is it not possible to just pass this arguments directly to the final function?
I was looking at string_agg but that was doing all the processing in the SFUNC if I understand it right.
But to use it as example, if it instead would have collected all strings in an array and added the delimiter in the final function, would that be possible?
I would expect the definition of the aggregate to look something like:
CREATE AGGREGATE string_agg(text, text) (
SFUNC=string_agg_transfn($1),
STYPE=internal,
FINALFUNC=string_agg_finalfn($2)
);
Am I missing something or am I just thinking in irregular circles (that happens now and then)
Best Regards
Nicklas Avén
=?UTF-8?B?Tmlja2xhcyBBdsOpbg==?= <nicklas.aven@jordogskog.no> writes: > I am trying to create an aggregate function. > One of the arguments is static and is not needed until the final function. > From the doc I see that the final function " must take a single > argument of typestate_data_type" > Is it not possible to just pass this arguments directly to the final > function? No. There is no expectation in the aggregate infrastructure that any argument position would have a fixed value across all rows, which is what you'd need for such a thing to be well-defined. Perhaps you could construct your usage like this: post_process_function(aggregate_function(...), fixed_argument) where the aggregate_function just collects the varying values and then the post_process_function does what you were thinking of as the final function. regards, tom lane
Thank you Tom On 05/19/2013 01:26 AM, Tom Lane wrote: > =?UTF-8?B?Tmlja2xhcyBBdsOpbg==?= <nicklas.aven@jordogskog.no> writes: > > Perhaps you could construct your usage like this: > > post_process_function(aggregate_function(...), fixed_argument) > > where the aggregate_function just collects the varying values > and then the post_process_function does what you were thinking > of as the final function. > > Maybe that is the way I have to go. But I would like to avoid it because I think the interface gets a bit less clean for the users. I also suspect that it causes some more memcopying to get out of the aggregation function and into a new function. (Am I right about that) As i understand it i have two options 1) Do as you suggest and divide the process in one aggregate function and one post_processing 2 Contruct a structure for the state-value that can hold those values. In this case those arguments is just 1 smallint , and 1 char(3). I will just have to handle them for the first row to store them in my structure, then I can just ignore them. Am I right that it will be a very small overhead even if those values are sent to the function for each row? My question is if I can get further advice about what bottlenecks and traps I should consider. What I am aggregating is geometries (PostGIS). It can be 1 to millions of rows, and the geometries can be points of a few bytes to complex geometry-collections of many megabytes. Regards /Nicklas