Qt Unresolved external symbol QMetaObject error

This one was incredibly frustrating as a Qt noob...

Error   4   error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Counter::metaObject(void)const " (?metaObject@Counter@@UBEPBUQMetaObject@@XZ) 
Error   5   error LNK2001: unresolved external symbol "public: virtual void * __thiscall Counter::qt_metacast(char const *)" (?qt_metacast@Counter@@UAEPAXPBD@Z)
Error   6   error LNK2001: unresolved external symbol "public: virtual int __thiscall Counter::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Counter@@UAEHW4Call@QMetaObject@@HPAPAX@Z)  
Error   7   error LNK2019: unresolved external symbol "protected: void __thiscall Counter::valueChanged(int)" (?valueChanged@Counter@@IAEXH@Z) referenced in function "public: void __thiscall Counter::setValue(int)" (?setValue@Counter@@QAEXH@Z
This happens when you use the Q_OBJECT macro in your class extending QObject. Turns out in Qt you need to call run qmake first in order to invoke the moc compiler. So, the proper solution: 1. Run qmake 2. Build 3. Run

Install Scrapy via cygwin

Take the following with a grain of salt, because I'm not 100% sure all the dependencies, but the following should give you enough info to figure out anything which is missing.



1. Install cygwin64
2. Install cygwin packages: python, python3, libxml2-devel, libxslt-devel, libpcre-devel, libffi-devel, gcc-core
3. Install PIP
- wget https://bootstrap.pypa.io/get-pip.py
- python get-pip.py
4. Install scrapy
- CFLAGS="-I/cygdrive/c/Cygwin64/lib/libffi-3.0.13/include -I/cygdrive/c/Cygwin64/usr/include/libxml2 -I/cygdrive/c/Cygwin64/usr/include/libxslt" pip2.7 install scrapy



In the process I saw lots of:

- fatal error: libffi/ffi.h: No such file or directory
- fatal error: libxml/xmlversion.h: No such file or directory
- fatal error: libxslt/xsltconfig.h: No such file or directory
- error: command 'gcc' failed with exit status 1


Think these were all resolved by adding the CFLAGS includes.

Unknown table engine 'InnoDB'

Sometimes on initial mysql setup, you will find that you can log into the db, use db. But when you select * from table, you get the following error message:
Table 'db.tablename' doesn't exist

This is most likely because the data you are importing was intended for a non-transactional configured database.

To reconfigure the database as a non-transactional one: execute C:/.../MySQL Server X.Y/bin/MySQLInstanceConfig.exe

After this is done, you still need to alter the my.ini configuration file to tell mysql to use the innodb engine. If not you will likely see this error message:
Unknown table engine 'InnoDB'

To which the solution is to make sure you have the following line in your my.ini file:
default-storage-engine=INNODB

PHP with CGI crash with extensions

When enabling PHP extensions, IIS is crashing even for a simple phpinfo() call, that is, as I uncomment extension=php_mssql.dll I immediately get:

HTTP Error 500.0 - Internal Server Error

The FastCGI process exited unexpectedly


Turns out, the issue is that the default php.ini has extension_dir = "./", the fix is to change this to:

extension_dir = "./ext"

Dont forget to restart IIS (Stop & start the server not just the Site).

Setting up host urls in IIS

The following was done in IIS7.

When you add a new website:
Site name: WhateverYouWant
Application pool: Pick the appropriate .NET pool
Physical path: Path to root (can be anywhere on you HDD)
Type: http
IP address: 127.0.0.1
Port: 80
Host name: whatever-you-want.com

Edit C:\windows\system32\drivers\etc\hosts

Add the following line:
127.0.0.1    whatever-you-want.com

Flush DNS in command prompt:
ipconfig /flushdns

Load the page in browser:
http://whatever-you-want.com