动态调用必须要使用extern "C"的原因:
extern "C"的作用是,使编译器按照c的方式生成函数名,c的方式实际的函数名和你写的一样。如果没有这个,则按照c++的方式生成函数名,这样实际的函数名(LoadLibrary方式GetProcAddress传入的函数名)和你写得函数名不一样,这样你用LoadLibrary、GetProcAddress这种方式调用dll就不成功。
但是用引入库的方式调用,则编译器自动转换函数名,所以总是没有问题。
动态调用必须要使用extern "C"的原因:
extern "C"的作用是,使编译器按照c的方式生成函数名,c的方式实际的函数名和你写的一样。如果没有这个,则按照c++的方式生成函数名,这样实际的函数名(LoadLibrary方式GetProcAddress传入的函数名)和你写得函数名不一样,这样你用LoadLibrary、GetProcAddress这种方式调用dll就不成功。
但是用引入库的方式调用,则编译器自动转换函数名,所以总是没有问题。