You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a very basic but nevertheless working build instruction for libtclpy under Windows. My setup is a Windows Vista machine with Visual Studio 2008 Express, ActiveTcl 8.6 and Python 2.7 from python.org.
(Edit 2014-11-01: Added tcc support)
(Edit 2014-11-10: VStudio 2012 Express on Windows 7 works as expected with the same batch file)
About compiling on Windows, especially with the Visual Studio compiler
The Microsoft compiler is not fully C99 compliant, therefore I had to compile in C++ mode (the /TP option). Test for a defined _MSC_VER to detect the VStudio compiler or _WIN32 for Windows in general.
Adjustments to tclpy.c
.1. Generally replace the index function by strchr (even for Unix systems). You must assign to a const pointer for that.
.2. Line 415 needs a cast (at least for VStudio 2008)
This is a very basic script that is supposed to be placed in the project's root directory and called from a Visual Studio command line.
:: build.bat
:: Creates libtclpy.0.3.dll in this folder.
:: Adjust includes and libs if you don't have a default installation of Tcl and Python.
:: Run from a Visual Studio command line
:: > build vstudio
:: > build test
:: Or with tcc
:: > build tcc
:: > build test
setlocal
@if '%1' == 'vstudio' goto vstudio
@if '%1' == 'tcc' goto tcc
@if '%1' == 'test' goto test
@if '%1' == 'clean' goto clean
@echo USAGE build ^<TARGET^>
@echo TARGET vstudio, tcc, test or clean
@goto end
:vstudio
set defines=/DPACKAGE_VERSION=\"0.3\"
set includes=/IC:\Tcl\include /IC:\Python27\include
set libs=/LIBPATH:C:\Tcl\lib /LIBPATH:C:\Python27\libs tcl86.lib python27.lib
cl generic\tclpy.c /TP /LD %defines% %includes% /link %libs% /OUT:libtclpy0.3.dll
echo package ifneeded tclpy 0.3 [list load [file join $dir libtclpy0.3.dll] tclpy]> pkgIndex.tcl
goto end
:tcc
set defines=-DPACKAGE_VERSION=\"0.3\"
set includes=-IC:\Tcl\include -IC:\Python27\include
set libs=-LC:\Tcl\bin -LC:\Python27\libs -ltcl86 -lpython27
tcc generic\tclpy.c %defines% %includes% %libs% -shared -olibtclpy0.3.dll
echo package ifneeded tclpy 0.3 [list load [file join $dir libtclpy0.3.dll] tclpy]> pkgIndex.tcl
goto end
:test
set TCLLIBPATH=.
tclsh tests\tclpy.test
goto end
:clean
echo cleaning
del tclpy*
del libtclpy*
goto end
:end
Result
All tests except for types-1.5 pass.
The text was updated successfully, but these errors were encountered:
This is a very basic but nevertheless working build instruction for libtclpy under Windows. My setup is a Windows Vista machine with Visual Studio 2008 Express, ActiveTcl 8.6 and Python 2.7 from python.org.
(Edit 2014-11-01: Added tcc support)
(Edit 2014-11-10: VStudio 2012 Express on Windows 7 works as expected with the same batch file)
About compiling on Windows, especially with the Visual Studio compiler
The Microsoft compiler is not fully C99 compliant, therefore I had to compile in C++ mode (the
/TP
option). Test for a defined_MSC_VER
to detect the VStudio compiler or_WIN32
for Windows in general.Adjustments to tclpy.c
.1. Generally replace the
index
function bystrchr
(even for Unix systems). You must assign to a const pointer for that..2. Line 415 needs a cast (at least for VStudio 2008)
.3. Remove the
#include <dlfcn.h>
line and thedlopen
line for a Windows build..4. The two exported functions must be written in this way:
Compile script
This is a very basic script that is supposed to be placed in the project's root directory and called from a Visual Studio command line.
Result
All tests except for
types-1.5
pass.The text was updated successfully, but these errors were encountered: